Я пытаюсь сделать свой сайт добавлением конечной косой черты, а затем переписать URI на страницу html
. В основном перенаправить xy.com/abc
на xy.com/abc/
, а затем загрузить xy.com/abc.html
.Сервер Apache загружает страницу вместо применения правила перезаписи
Мой .htaccess
файл выглядит следующим образом:
RewriteEngine on
RewriteBase/
RewriteRule ^([a-z]+)$ $1/ [R]
RewriteRule ^([a-z]+)/$ $1.html [L]
Когда я пытаюсь идти к xy.com/asd
(не существующей страницы) перенаправляет на xy.com/asd/
и дает мне правильную ошибку 404.
Когда я пытаюсь создать страницу, которая на самом деле существует (xy.com/about
), она просто загружает xy.com/about.html
без перенаправления вообще.
Awesome, 'Параметры -MultiViews' решает проблему самостоятельно. Большое спасибо. Правильно ли я понимаю, что RewriteCond проверяет, существует ли файл html с правильным именем, прежде чем пытаться его загрузить? Какая разница, если она 404? – zsmb13
Да, действительно, 'RewriteCond' гарантирует, что файл' .html' существует до добавления расширения '.html'. Также для обоих правил нужен флаг 'L'. – anubhava