在 .htaccess 文件中使用 if 语句
Using if statement in .htaccess file
使用 .htaccess 文件中的基本正则表达式代码,从站点 url 中删除 .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 文件,用于发送电子邮件,并且不能 post 数据到这个文件,因为 .htaccess 的规则,那个路径是这样的:
www.site/mail 而不是 www.site/mail.php.
所以,有没有办法在 .htaccess 中设置类似:
如果url是:www.site/mail.php不使用裁剪分机的规则?
实际上,您的第一条规则不应该为任何 POST
请求删除 .php
,否则您将丢失所有 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 ^(.+?)/?$ .php [L]
使用 .htaccess 文件中的基本正则表达式代码,从站点 url 中删除 .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 文件,用于发送电子邮件,并且不能 post 数据到这个文件,因为 .htaccess 的规则,那个路径是这样的: www.site/mail 而不是 www.site/mail.php.
所以,有没有办法在 .htaccess 中设置类似:
如果url是:www.site/mail.php不使用裁剪分机的规则?
实际上,您的第一条规则不应该为任何 POST
请求删除 .php
,否则您将丢失所有 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 ^(.+?)/?$ .php [L]