我正在使用以下htaccess规则从web url中删除双斜杠或多斜杠:
#remove double/more slashes in url
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
字符串
这对于出现在URI中间的斜杠很有效,例如,If use url:
http://demo.codesamplez.com/html5//audio
型
它被重定向到正确的单一slahs url:
http://demo.codesamplez.com/html5/audio
但是如果URL在开始时包含双斜杠,就在域名之后,那么它就不起作用了,例如:
http://demo.codesamplez.com//html5/audio
型
它没有被重定向。
我如何修复上述规则,使其也适用于这种类型的url?- 谢谢-谢谢
7条答案
按热度按时间hgb9j2n61#
给予一下:
字符串
它应该重定向到域末尾的一个斜杠。你的进步:
型
eivgtgni2#
对我来说,以下规则非常有效:
字符串
这个想法很大程度上是基于Marcels的回答(谢谢!),但是这个更轻量级,并且包括
RewriteBase
,如果您使用特定的子目录结构,这可能会有所帮助。此外,Marcels的回答缺乏解释,我想解决这个问题:规则1:
{THE_REQUEST}
包含类似GET /index.html HTTP/1.1
的内容(参见docs)。因此,如果我们匹配第一个空格(\s
),后面跟着多个斜杠(/{2,}
),我们可以通过$1
访问没有前导双斜杠的正确URL。规则2:正则表达式
^(.*)/{2,}(.*)$
将请求URI拆分为多个斜杠。然后%1/%2
再次组合两个拆分的字符串,但此时只有一个斜杠。gj3fmq9x3#
根据this链接,以下代码应注意URL中的额外斜杠(任何地方)。
字符串
4c8rllxm4#
为了防止您的URL中出现长时间重复的字符,例如:
字符串
您可以:
型
它应该与以下各项一起工作:
型
.htaccess -如何从url中删除重复的字符?
klr1opcd5#
这种情况很容易解决,使用一个美味的. htaccess片。您需要做的就是复制以下代码和您的站点的根
.htaccess
文件:字符串
规则1:
{THE_REQUEST}
包含类似GET /index.html HTTP/1.1
的内容因此,如果我们匹配第一个空格
(\s)
,后面跟着多个斜杠(/{2,})
,我们可以通过$1
访问没有前导双斜杠的正确URL。**规则2:**正则表达式
^(.*)/{2,}(.*)$
将请求URI拆分为多个斜杠。然后%1/%2
再次组合两个拆分的字符串,但此时只有一个斜杠。例如,此指令将重定向如下:
https://www.meysmahdavi.com//重定向到https://www.meysmahdavi.com/https://www.meysmahdavi.com//blog-post/重定向到https://www.meysmahdavi.com/blog-post/https://www.meysmahdavi.com//path/directory/重定向到https://www.meysmahdavi.com/path/directory/
所以基本上它会从任何URL中删除双斜杠。
来源:https://www.meysmahdavi.com/
b09cbbtk6#
只要把下面的代码到你的.htaccess文件。它将删除任意位置多个斜线。在URL的末尾和URL的中间。
字符串
nwwlzxa77#
这里有一个稍微的变化,我发现当你有一个.htaccess文件和许多子目录时效果更好:
字符串