2015-02-09 3 views
0

У меня эти строки в моем httpd.conf, которые делают все URL как один параметр ('name'), и когда я набираю имя, которое не существует, index.php загружается правильно и отображается сообщение 404. Но проблема в том, что JavaScript, CSS and other assets are not loaded. Как загрузить эти файлы, даже если файл/файл не существует. ? Я использую relative paths. Спасибо;)mod_rewrite load css и js, если файл не найден

<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> 
+1

Добавьте это в раздел '' страницы вашей страницы: '', чтобы каждый относительный URL-адрес был удален с этого URL-адреса, а не URL-адрес текущей страницы. – anubhava

+1

Ничего себе. Большое спасибо человеку. Отлично. @anubhava –

+0

Добро пожаловать, рад, что это помогло. – anubhava

ответ

1

Как правило, FallbackResource директивы является экологически чистый и более производительным способом добиться того, что вы пытаетесь сделать здесь:

http://httpd.apache.org/docs/trunk/mod/mod_dir.html#fallbackresource

Вместо mod_rewrite вещей, просто написать это:

FallbackResource index.php 

Внутри PHP скрипт вы можете превратить PATH_INFO среды ва в том, что вы используете для захвата аргумента name.

+0

Можете ли вы объяснить мне, почему это быстрее и эффективнее, чем mod_rewrite? Я сделал это в 'httpd.conf', но теперь, как я могу получить переменную имени из url через' PATH_INFO', если мой url для ex. как «http: // localhost/john'? Спасибо @djc –

+0

Я думаю, что это обработает весь URL как несуществующий, потому что переменная 'name' будет динамической. и не будет файла 'name.php' –

Смежные вопросы