У меня есть сайт под Apache2
, который доступен извне и внутренне через разные URL-адреса. Он должен работать как на example.com/
, так и на example.com/sites/mysite/
. Поэтому я использую относительные адреса в моем HTML, как:Некоторые усовершенствованные функции mod_rewrite от Apache?
../static/css/style.css
../some_other_page.html
Для того, чтобы обрабатывать недопустимые запросы на несуществующие страницы (например, example.com/non_existing_page/
) Я сделал страницу ошибки (которая также содержит ссылки на другие части сайта) и используется mod_rewrite
передать запросы там:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule .* /custom_404_page/ [PT]
в результате пользователь видит хорошо настроенную страницу, а адресная строка все еще содержит оригинальный запрос. Это правило также может быть адаптировано в соответствии с базовым URL-адресом. Однако при выполнении недопустимого запроса в подкаталог (например, example.com/non/existing/page/
) страница с ошибкой прерывается, так как ссылки являются относительными (например, ../static/css/style.css
теперь разрешается до example.com/non/existing/static/css/style.css
). Я мог бы исправить эту проблему, используя флаг [R]
(redirect) вместо [PT]
; однако, адресная строка также читает example.com/custom_404_page/
, чего я бы хотел избежать.
Поэтому мне интересно, можно ли сохранить все три функции во время работы под Apache2
:
- Возможности работать на различных базовые адреса
- Показаны настроенная страница ошибок для недопустимых запросов
- подпорной оригинальные запросы в адресной строке
вы можете использовать 'FallbackResource' вместо этого, попробуйте. –