У меня есть эти строки в моем httpd.conf
которые делают все url как один параметр ('name'
), и когда я набираю имя, которое не существует, index.php загружается правильно, и отображается сообщение 404. Но проблема в том, что JavaScript, CSS and other assets are not loaded.
Как загрузить эти файлы, даже если файл/файл не существует. ? Я использую relative paths
. Благодаря ;)
<Directory "c:/Apache24/htdocs/public">
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?name=$1 [QSA,L]
</IfModule>
</Directory>
Как правило, директива FallbackResource
является более чистым и более эффективным способом достижения того, что вы пытаетесь сделать здесь:
http://httpd.apache.org/docs/trunk/mod/mod_dir.html#fallbackresource
Вместо материала mod_rewrite
просто напишите:
FallbackResource index.php
Внутри PHP-скрипта вы можете превратить PATH_INFO
среды PATH_INFO
во все, что вы используете, для захвата аргумента name
.
httpd.conf
но теперь, как я могу получить переменную имени из URL через PATH_INFO
если мой URL для ex. это что-то вроде http://localhost/john
? Спасибо @djc
name
переменной будет динамическим. и не будет файла 'name.php'
<head>
HTML-кода вашей страницы:<base href="/" />
чтобы каждый относительный URL-адрес разрешался по этому URL-адресу, а не по URL-адресу текущей страницы.