Apache 重写.htaccess的规则,结尾带斜杠

Apache 重写.htaccess的规则,结尾带斜杠,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我的网站上有两种链接:第一种是以.html结尾,第二种是以/(斜杠结尾,如果文件名不是以.html结尾) 导致某些重写规则的原因,在文件不是.html的情况下,如果在末尾添加了/则URL未正确重写 比如: 链接:http://mysite.com/cars/fast-cars 但链接不正常:http://mysite.com/cars/fast-cars/ 所以,我需要的是当URL以/而不是(.html/)结束时,重定向到同一页面,而不使用/,或者在这种情况下: http://mysite.co

我的网站上有两种链接:第一种是以.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

希望我说的很清楚,希望你能帮我解决这个访问规则。先谢谢你

更新:我在这里找到了部分解决方案:

但是,同样,我的规则对于某些子目录(如目录管理员、订单等)应该无效。它也可以用相同的规则定义吗

更新2:我有如下规则:

RewriteRule ^cars/fast-cars$ /seopage.php?marker=fast-cars$1
此外,尝试使用有效的规则:

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

但对于某些目录(如管理员、订单等),必须绕过该规则。

您可以通过几种方法来实现这一点(选择最适合您的方法)

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

# remove trailing slash for non-existing files and folders
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [L,R=301]
2) 删除尾部斜杠
/
,但有例外

# remove trailing slash except some folders
RewriteCond %{REQUEST_URI} !^/(admin|orders)
RewriteRule ^(.*)/$ $1 [L,R=301]
3) 您甚至可以将其组合在一起(可能太多):

也可以考虑在顶部添加这个指令:


请显示您现在拥有的规则(包括您最近添加的规则)。最好有评论。什么文件夹(举几个例子)?它们是真的吗。。或者它们像
/cars/fast cars
一样是“虚拟的”?添加这样的条件应该没有问题,我只是想让自己明白。文件夹是真实的。他们的名字(目前是管理员和订单,但将来会有更多)。我认为2将完成这项工作。它是否适用于上述目录的子目录?是的,条件是:“除非/除了URL以
/admin
/orders
开头”,这也适用于
/admin/dashboard/
等。
RewriteCond %{REQUEST_URI} !^/(admin|orders)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [L,R=301]
DirectorySlash Off