Я использую мод перезаписи, чтобы перенаправить все запросы с несуществующими файлами / каталогами на index.php?url=*
Это, безусловно, самая распространенная вещь, которую вы делаете с mod_rewrite, но у меня есть проблема:
Естественно, если URL-адрес страницы «mydomain.com/blog/view/1», браузер будет искать изображения, таблицы стилей и относительные ссылки в «виртуальном» каталоге «mydomain.com/blog/view/».
Задача 1:
Является ли использование базового тега лучшим решением? Я вижу, что ни одна из PHP-фреймворков там не использует базовый тег, хотя.
В настоящее время у меня есть регулярное выражение, заменяющее все относительные ссылки, чтобы указать правильный путь перед выводом. Это нормально?
Задача 2:
Возможно, сервер не поддерживает mod_rewrite. Однако все общедоступные файлы, такие как изображения, таблицы стилей и сборщик запросов index.php, находятся в каталоге /myapp/public
. Обычно mod_rewrite направляет весь запрос на /public
, поэтому создается впечатление, что public на самом деле был корневым каталогом для всех пользователей.
Однако, если нет mod_rewrite, я должен указать пользователям на /public
из корневого каталога с помощью вызова header()
. Это означает, однако, что все ссылки снова разрываются, потому что внезапно все изображения и т. Д. Должны быть вызваны через /public/myimage.jpg
Дополнительная информация: при отсутствии mod_rewrite вышеупомянутый запрос будет выглядеть так: mydomain.com/public/index.php/blog/view/1
- Каковы наилучшие решения для обеих проблем?
Редактировать / Дополнительный вопрос:
Есть ли способ сделать / public / base dir с использованием простого кода htaccess?