使用.htaccess删除多个URL的尾部斜杠
上周我发布了类似的问题,但我想知道如何使用.htaccess删除尾随斜杠。对于特定页面,rest页面将使用尾随斜杠重定向使用.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
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]
在测试之前,请确保清除浏览器缓存