阿帕奇條空的路徑段。所以/path//
被視爲/path/
。但是,您的瀏覽器不會使用/path//
來解析相關的URL。
如果你想刪除多個斜線,您可以使用以下規則:
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /(([^/\ ]+/)*)/+([^\ ]*)
RewriteRule^/%1%3 [L,R=301]
釋
儘管阿帕奇消除內部空路徑段時,THE_REQUEST
環境變量(持有HTTP request line)保持不動。所以我們可以使用這個值來檢查多個斜線。
^[A-Z]+\ /
匹配的請求的方法,下面的空間和URI路徑的第一斜槓字符。
(([^/\ ]+/)*)
匹配所有下列非空路徑段(foo/
,foo/bar/
,foo/bar/baz/
等)或沒有,如果有沒有。
/+
匹配空路徑段作爲該斜槓之前的字符始終是另一個斜槓(請參閱前面的表達式)。
([^\ ]*)
匹配URI的其餘部分(可能包含更多的空路徑段)。
例子:比方說,我們要求http://example.com/foo/bar//baz
,請求行看起來像這樣:
GET /foo/bar//baz HTTP/1.1
模式會再搭配如下:
0: GET /foo/bar//baz
1: foo/bar/
2: bar/
3: baz
所以請求的路徑/foo/bar//baz
將被重定向到/foo/bar/baz
(/%1%3
)。
輝煌。你能否解釋一下這些行中的每一行? – 2009-01-24 18:37:50