如何设置.htaccess重写URL以去除末尾斜杠
解决URL末尾斜杠自动去除的问题
没问题,我帮你调整.htaccess规则,既能实现自动去除URL末尾的斜杠,又能保留你原有的路由逻辑。修改后的完整代码如下:
Options +FollowSymLinks RewriteEngine on # 自动去除URL末尾的斜杠(排除真实存在的目录) RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] # 原有路由规则(简化为匹配不带斜杠的URL即可) RewriteRule ^([a-zA-Z0-9]*)$ index.php [QSA]
规则说明:
- 新增的
RewriteCond %{REQUEST_FILENAME} !-d是为了排除真实存在的目录——如果访问的是服务器上实际存在的目录,末尾的斜杠是合理的,不会被强制去除。 RewriteRule ^(.*)/$ /$1 [L,R=301]会匹配所有末尾带斜杠的URL,将其重定向到不带斜杠的版本。R=301表示永久重定向,对SEO更友好;如果还在测试阶段,可以改成R=302临时重定向。L表示这是最后一条规则,匹配后不再执行后续规则。- 原有的路由规则我做了简化,因为已经通过重定向把带斜杠的URL转换成不带斜杠的了,所以只需要匹配不带斜杠的URL即可,逻辑和原来完全一致。
需要注意的是,重定向规则一定要放在路由规则的前面,否则mod_rewrite会先执行路由规则,重定向就不会生效了。
内容的提问来源于stack exchange,提问作者Szymon Zachariasz
相关产品推荐
相关产品推荐

