Я хочу переписать example.com/login в example.com/login.php
это работало на моем старом сервере, так как я использовал это правило в файле .htaccess:
RewriteRule ^login$ login.php [L]
когда я перешел на новый сервер, это конкретное правило перестало работать, но если я изменю, например, login на loginx
RewriteRule ^loginx$ login.php [L]
правило работает, и я вижу страницу входа, когда захожу на example.com/loginx
также, если я меняю имя файла, правило тоже начинает работать
RewriteRule ^login$ loginx.php [L]
Похоже, что если правило и файл имеют одно и то же имя (логин в данном случае), правило не работает по непонятной мне причине, кто-нибудь знает, почему это происходит и как с этим бороться?
Вот полный .htaccess файл:
RewriteEngine On
RewriteBase /
RewriteRule ^login$ login.php [L]
RewriteRule ^users$ users.php [L]
RewriteRule ^profile$ me.php [L]
проблема возникает и с users (потому что файл имеет имя в качестве URL-адреса)
правило profile работает правильно.
У вас есть доступ к файлам apache .conf?
да, я хочу добавить, что все остальные правила перезаписи работают, кроме этого
Пожалуйста, опубликуйте весь .htaccess, возможно, это конфликтующее правило.
Отключите MultiViews, он чаще всего является виновником подобных ситуаций.
большое спасибо, это решило проблему






Вы добавили RewriteEngine On над ним в .htaccess?
движок перезаписи включен да, все остальные правила перезаписи работают и само правило начинает работать, если я что-то меняю в слове "логин"
У меня все заработало благодаря 04FS
я только что добавил
Options -Multiviews
в верхней части моего файла htaccess
Какая у вас версия апача? Были ли у вас какие-либо другие файлы, базовое имя которых также было login или users? (Обычно, с включенным MultiViews, login.php и users.php все еще должны были быть вызваны, поскольку это то, что делает MultiViews, но две затронутые директивы mod_rewrite были бы эффективно обойдены.)
Работает с этим тестером: htaccess.madewithlove.be?share=eaac3d98-5dd7-586f-9122-20dd77ab…