Правило перезаписи .htaccess нарушает css и javascript, когда в URL-адресе существует несуществующий подкаталог или конечный sla sh - PullRequest
0 голосов
/ 16 марта 2020

Я заметил, что добавление трейлинга / к индексу. php разбивает css и javascript, что было объяснено здесь - что происходит, когда я ставлю a-sla sh - после -a- php -url

Мое правило перезаписи берет любую строку после домена и прямой слэ sh и помещает ее в переменную GET q. Так что foo.com/foo работает нормально, и я могу получить доступ к / foo в переменной GET q. Как я могу получить любой несуществующий ресурс, запрошенный в строке URL, чтобы работать аналогичным образом? Сделайте foo.com/foo/ ИЛИ foo.com/foo/foo et c. перенаправить на индекс. php и не прерывать css и javascript.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ ./index.php?q=$1 [NC,L,QSA]
</IfModule>

Мое правило перезаписи работает, когда строка индекса добавляется к индексу. php или когда /index.php заменяется на / foo, но разбивает js и css когда добавляются дополнительные каталоги, такие как / foo / или / foo / foo. Как нужно написать правило, чтобы предотвратить это?

1 Ответ

1 голос
/ 16 марта 2020

Похоже, что вы используете относительные ссылки для включения файлов javascript или css. Итак, все, что вам нужно сделать, это сделать ваши адреса файлов абсолютными, как /js/search.js. Правило перезаписи правильное, и оно не будет перенаправлять фактические файлы в файл индекса. php. Но когда вы говорите src='js/search.js', это означает index.php / js / search. js для браузера, и это не фактический адрес файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...