重写.htaccess的规则,最后用斜线

use*_*003 2 apache .htaccess mod-rewrite

我的网站上有两种链接:第一种是使用.html完成,第二种是以/结尾(斜线,如果文件名没有以.html结尾).

一些重写规则的原因,在文件不是.html的情况下,如果添加/在最后,URL没有被正确地重写.

喜欢:

链接没问题: http://mysite.com/cars/fast-cars

但链接不好 http://mysite.com/cars/fast-cars/

所以,我需要的是当URL完成时而/不是(.html/),重定向到同一页面,没有/,或者在这种情况下:

http://mysite.com/cars/fast-cars/被重定向到http://mysite.com/cars/fast-cars.

希望我很清楚,你可以帮我解决那个htaccess规则.先感谢您.

更新:我确实找到了解决方案的一部分:.htaccess有或没有斜线.

但是,我的规则也不应该对某些子目录(如目录管理员,订单等)有效.可以用同样的规则来定义吗?

更新2:我有以下规则:

RewriteRule ^cars/fast-cars$ /seopage.php?marker=fast-cars$1
Run Code Online (Sandbox Code Playgroud)

此外,尝试使用的规则:

RewriteRule (.*)/$ $1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

但是对于某些目录(即管理员,订单等),必须绕过该规则.

Laz*_*One 5

您可以通过几种方式完成此操作(选择最适合您的方式).

1)删除/不存在的文件和文件夹的尾部斜杠:

# remove trailing slash for non-existing files and folders
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

2)删除尾部斜杠/,但有例外

# remove trailing slash except some folders
RewriteCond %{REQUEST_URI} !^/(admin|orders)
RewriteRule ^(.*)/$ $1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

3)你甚至可以将它们组合在一起(这可能太多了):

RewriteCond %{REQUEST_URI} !^/(admin|orders)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

另外,考虑在顶部的某处添加此指令 - 文档:

DirectorySlash Off
Run Code Online (Sandbox Code Playgroud)