Я очень, очень (очень!) Новичок в использовании мода rewrite ... У меня есть следующий набор в моем htaccess, и он работает, как ожидалось, для удаления расширения .php. Мой вопрос в том, как также сделать URL-адрес без расширения, если кто-то помещает какое-либо расширение в конец URL-адреса? Сейчас http://www.example.com/share все работает, но так же http://www.example.com/share.php. Я хочу удалить все расширения на этих страницах!
Options +FollowSymlinks
RewriteEngine on
# remove php extension from all matching files
RewriteRule ^(share|invite|submission|thankyou|confirm|over|report)$ $1.php [NC]
Я пробовал несколько вещей, и это всегда приводило к нарушению обеих функций. По какой-то причине это самое невозможное для быстрого поиска ответов в Google. Заранее спасибо!
ОБНОВЛЕНИЕ: работает определенным образом, но получает бесконечный цикл перенаправления:
Options +FollowSymlinks
RewriteEngine on
# reslove extensionless urls
RewriteRule ^(share|invite|submission|thankyou|confirm|over|report|emailtest)$ $1.php [NC]
# make .php redirect to extensionless urls
RewriteRule ^(share|invite|submission|thankyou|confirm|over|report).php$ /$1 [R=301,L,QSA]
Вы имеете в виду, если кто-то набирает .../share.php
, вы хотите, чтобы это стало .../share
? Если да, вам нужно его перенаправить.
RewriteRule ^(share|invite|submission|thankyou|confirm|over|report).php$ /$1 [R=302,L,QSA]
Измените этот 302 на 301, если он работает, чтобы сделать постоянное перенаправление.