如何使用.htaccess将带.php?后缀的URL重定向为仅.php格式
解决方案
重写规则调整说明
你原有规则仅能匹配.php后携带路径分隔符/的场景,无法处理.php后缀后带查询参数的情况,以下是整合两项需求的完整配置:
RewriteEngine On # 需求1:处理.php后携带路径的情况,重定向到仅保留.php路径 RewriteRule ^(.+\.php)/.*$ http://%{HTTP_HOST}/$1 [R=301,L] # 需求1补充:处理.php后携带查询参数的情况,重定向后清空所有查询参数 RewriteCond %{QUERY_STRING} .+ RewriteRule ^(.+\.php)$ http://%{HTTP_HOST}/$1? [R=301,L] # 原有secure路径跳转规则保留 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^/?secure/(.*) https://example.org$1 [R,L] # 需求2:拦截所有不存在的URL访问 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ - [R=404,L]
规则生效说明
- 前两段规则会自动把所有
.php后带的路径、查询参数全部清理掉,301重定向到仅保留.php的纯净路径 - 最后一段规则会校验所有请求对应的文件/目录是否真实存在,不存在的请求直接返回404状态码拦截
- 如果需要对
.php后缀后带内容的请求直接拦截而非重定向,可把前两段重定向规则替换为以下规则:
# 直接拦截.php后缀后带任何内容的请求 RewriteRule ^.+\.php/.+ - [R=403,L] RewriteCond %{QUERY_STRING} .+ RewriteRule ^.+\.php$ - [R=403,L]
内容的提问来源于stack exchange,提问作者Stackmenow
相关产品推荐
相关产品推荐

