使用.htaccess文件中的基本正则表达式代码,从网站网址中删除.php扩展名,如下所示:
# Externally redirect
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
##Internally redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
这样工作正常,但我也有mail.php文件,用于发送电子邮件,并且无法将数据发布到此文件,因为来自.htaccess的规则,该路径如下所示: www.site/mail而不是www.site/mail.php。
那么,有没有办法在.htaccess中设置:
如果网址是:www.site/mail.php不使用规则来削减扩展名?
答案 0 :(得分:1)
实际上,您的第一条规则不应删除任何.php
请求的POST
,否则您将丢失所有POST
数据。您可以使用以下方法修复它:
# Externally redirect if not POST request
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,L,NE]
##Internally redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]