配置.htaccess URL重写:移除PHP后缀且保留URL参数
.htaccess规则优化:移除PHP后缀并保留URL参数
你的原规则没保留参数是因为缺少了查询字符串追加的配置,而且匹配范围有限。以下是修正后的规则,既能去掉.php后缀,又能完整保留URL里的参数:
RewriteEngine On # 处理无.php后缀的请求,映射到对应PHP文件并保留参数 RewriteCond %{REQUEST_FILENAME}!-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^([^/]+)/?$ $1.php [QSA,L] # 可选:自动把带.php的URL重定向到无后缀版本(避免重复内容) RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R=301,L]
关键说明:
[QSA]是核心:这个标志会自动把原URL的查询参数(比如?id=1)追加到重写后的PHP文件请求里,确保参数不丢失/?让规则同时支持带斜杠和不带斜杠的访问(比如/dashboard和/dashboard/都能正常映射到dashboard.php)- 第二个规则是可选的SEO优化:如果用户直接输入带
.php的URL,会自动301跳转到无后缀版本,避免同一内容出现两个URL
内容的提问来源于stack exchange,提问作者Maximilian
相关产品推荐
相关产品推荐

