mod_rewrite загружает css и js, если файл не найден

0

У меня есть эти строки в моем 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>
  • 1
    Добавьте это в раздел <head> HTML-кода вашей страницы: <base href="/" /> чтобы каждый относительный URL-адрес разрешался по этому URL-адресу, а не по URL-адресу текущей страницы.
  • 1
    Ух ты. Большое спасибо, мужчина. Отлично. @anubhava
Показать ещё 1 комментарий
Теги:
.htaccess
mod-rewrite
httpd.conf

1 ответ

1
Лучший ответ

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

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

Вместо материала mod_rewrite просто напишите:

FallbackResource index.php

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню