У меня это в файле htaccess
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php
Это позволит людям получить доступ к server/login.php
как к server/login
но как я могу это сделать, чтобы, если server/login.php
введен в адресную строку, он перенаправляется на server/login
.
Из-за этого мой сайт получает разные образы, а не только за один URL-адрес, благодаря вашим усилиям и времени.
Вы можете сделать это с помощью внешнего перенаправления:
RewriteRule ^(.*)\.php$ $1 [R,L]
R-флаг является временным перенаправлением. Если все работает так, как вы ожидаете, что они будут работать, вы можете использовать R = 301, чтобы сделать его постоянной переадресацией. Дополнительную информацию см. В документации .
Изменить: с помощью текущего правила это создаст бесконечный цикл. Если вы используете Apache 2.3.9 или новее, используйте флаг END в своем внутреннем правиле перезаписи. Если вы не хотите или не можете использовать такую версию Apache, вы можете использовать трюк «THE_REQUEST», чтобы остановить бесконечный цикл, поскольку это будет соответствовать только если запрос поступает извне:
RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s(.*)\.php[\s\?] [NC] RewriteRule ^ %1 [R,QSA,L]
Измените базовый путь RewriteBase /path/
RewriteEngine on RewriteBase /path/ RewriteCond %{THE_REQUEST} \.php RewriteRule ^(.*)\.php$ $1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php