使用.htaccess删除多个URL的尾部斜杠

使用.htaccess删除多个URL的尾部斜杠,.htaccess,.htaccess,上周我发布了类似的问题,但我想知道如何使用.htaccess删除尾随斜杠。对于特定页面,rest页面将使用尾随斜杠重定向 abc.com/demo/ should redirect to abc.com/demo 我得到的解决方案如下 RewriteEngine on RewriteCond %{REQUEST_URI} ^/demo/ [NC] RewriteRule ^demo/$ /demo [L,R] RewriteCond %{REQUEST_URI} !^/demo [NC] R

上周我发布了类似的问题,但我想知道如何使用.htaccess删除尾随斜杠。对于特定页面,rest页面将使用尾随斜杠重定向

abc.com/demo/ should redirect to abc.com/demo
我得到的解决方案如下

RewriteEngine on

RewriteCond %{REQUEST_URI} ^/demo/ [NC]
RewriteRule ^demo/$ /demo [L,R]
RewriteCond %{REQUEST_URI} !^/demo [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)([^/])$ /$1$2/ [L,R=301]
但是现在我需要多个URL。例如,demo2、demo3、demo4等,因此在这些场景中,代码将如何,需要建议

abc.com/demo2/ redirect to abc.com/demo2
abc.com/demo3/ redirect to abc.com/demo3
abc.com/demo4/ redirect to abc.com/demo4

要从多个URI中删除跟踪斜杠,可以创建一个正则表达式捕获组,该组一次匹配多个值,如下所示:

RewriteCond %{REQUEST_URI} ^/(demo1|demo2|demo3|demo4)/$ [NC]
RewriteRule /$ /%1 [L,R]
上述规则中的
%1
是一个RewriteCond backreference,它保存内部匹配的值
(demo1 | demo2 |……)
regex模式即:
demo1

您可以使用以下htaccess删除和添加跟踪斜线

RewriteEngine on

# remove traling slash from spacifc uris
RewriteCond %{REQUEST_URI} ^/(demo1|demo2|demo3|demo4)/$ [NC]
RewriteRule /$ /%1 [L,R]
# add traling slash to other uris except the spacifc ones
 RewriteCond %{REQUEST_URI} !^/(demo1|demo2|demo3|demo4)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)([^/])$ /$1$2/ [L,R=301]
在测试之前,请确保清除浏览器缓存