1

Я использую следующий URL переписать, чтобы получить более красивые URL:

RewriteRule (\d+)/(.+) $2?companyId=$1  [NC,L,B,QSA,NE]

URL /invoices.php?companyId=123 может быть, например, выражено как /123/invoices.php . Я проверил, и это работает нормально.

Проблема в том, что некоторые из моих php-файлов ссылаются на изображения и javascript по относительным URL- адресам , например, js/jquery.js . Я думал, что эти файлы будут также покрыты моим URL перезаписи, который является довольно общим, но, очевидно, это не так и возвращает 404 вместо этого.

Пример: доступ к /123/js/jquery.js в браузере возвращает ошибку 404: The requested URL /js/jquery.js was not found on this server. Обратите внимание, как сообщение об ошибке относится к имени файла, которое было переписано с правильным именем файла. Если я скопирую и вставлю URL-адрес из сообщения об ошибке в поле URL моего браузера (без правила перезаписи), он вернет файл!

Единственная разница между файлом php (который работает) и моими файлами images/javascript заключается в том, что последние находятся в подкаталогах, а не на корневом уровне.

Помещение моего php-файла в подпапку /test приводит к той же проблеме, например:

/35/test/invoices.php => The requested URL /test/invoices.php was not found on this server.

Опять же, mod_rewrite изменил путь, как и ожидалось, но apache не может найти файл. Доступ к нему напрямую работает нормально.

Проблема с javascripts и изображениями может быть легко решена с помощью абсолютных путей, так как им не нужен параметр companyId. Однако в будущем я могу захотеть структурировать свои php-файлы в подкаталогах, поэтому мне нужно исправить это сейчас.

Кто-нибудь знает, почему apache не может найти файлы в подкаталогах, когда путь прошел через модуль перезаписи?

Спасибо!

Гейр

0