为了账号安全,请及时绑定邮箱和手机立即绑定

.htaccess重写为强制结尾斜杠

/ 猿问

.htaccess重写为强制结尾斜杠

慕姐4208626 2019-11-14 14:21:41

我的htaccess文件中包含以下代码:


# Force Trailing Slash

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^[^/]+$ %{REQUEST_URI}/ [L,R=301]

当我转到www.mydomain.com/test时,这似乎工作正常,它将其重定向到/ test /。问题是,当我转到www.mydomain.com/test/another时,它不会在末尾加上斜线。


有没有人知道如何修改我的代码以使斜杠有效,无论URL多长时间?


谢谢!


查看完整描述

3 回答

?
慕村225694

RewriteRule ^(.*)([^/])$ http://%{HTTP_HOST}/$1$2/ [L,R=301]

编辑:在您要排除某些请求(例如php文件)的情况下:


RewriteCond %{REQUEST_URI}  !\.(php|html?|jpg|gif)$

RewriteRule ^(.*)([^/])$ http://%{HTTP_HOST}/$1$2/ [L,R=301]


查看完整回答
反对 回复 2019-11-14
?
HUX布斯

根据上面的答案,答案略强一些:


RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)([^/])$        /$1$2/ [L,R=301]

该RewriteCond会检查,以确保有一个与该名称的文件,如果没有,则执行重写规则。比具有扩展名的手动列表更具前瞻性!


查看完整回答
反对 回复 2019-11-14
?
MMMHUHU

接受的答案对我不起作用。从SEOMoz做到了:


# Ensure all URLs have a trailing slash.

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*)$ http://www.example.com/$1/ [L,R=301]

注意RewriteBase /每个规则。至少,当我删除它时,它停止工作。


查看完整回答
反对 回复 2019-11-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信