我对使用 mod 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]
我尝试了几种方法,但总是会破坏这两种功能。出于某种原因,这种东西是最不可能在谷歌上找到快速答案的东西。提前谢谢!
更新:以某种方式工作,但出现无限重定向循环:
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]
答案1
您的意思是,如果有人输入.../share.php
,您希望它变成.../share
?如果是这样,您需要重定向它。
RewriteRule ^(share|invite|submission|thankyou|confirm|over|report).php$ /$1 [R=302,L,QSA]
如果有效,请将 302 更改为 301,以使其执行永久重定向。