如何移除重定向URL中的末尾斜杠?Apache Rewrite规则优化
解决URL重写中移除.php扩展名且不添加末尾斜杠的问题
直接修改现有规则,调整重定向目标和内部映射的匹配逻辑即可,不需要额外添加全局去斜杠规则,具体代码如下:
RewriteEngine On RewriteBase / # 将带.php或不带的原始URL重定向到不带斜杠的干净URL RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^(about|contact)(\.php)?$ /$1 [R=302,L] # 将不带斜杠的干净URL内部映射到对应的.php文件 RewriteRule ^(about|contact)$ $1.php [END,QSA,NC]
关键修改说明:
- 第一条重定向规则的目标从
/$1/改为/$1,直接去掉了末尾斜杠,确保重定向后的URL格式符合需求 - 第二条内部映射规则的匹配模式从
^(about|contact)/$改为^(about|contact)$,对应匹配不带斜杠的URL,实现内部到PHP文件的映射
你之前的全局规则出错原因:
你添加的RewriteRule (.*)/$ $1 [R=301,L]是全局匹配所有带斜杠的URL,会和原有内部映射规则产生冲突。比如用户访问/about/时,这条规则会先将其重定向到/about,但后续内部规则又要处理/about,若规则顺序或条件限制不当,极易引发重定向循环或404错误。而直接针对指定页面修改规则,就能避免这类全局规则带来的冲突问题。
内容的提问来源于stack exchange,提问作者businezz
相关产品推荐
相关产品推荐

