服务器名称后有两个或多个斜杠 - mod_rewrite

Two or more slashes after server name - mod_rewrite

我有一个小问题: http://server//file

这两条斜线怎么去掉?我尝试用这种方法来做:

RewriteCond %{REQUEST_URI} ^/{2,}$ [NC]
RewriteRule . / [R,L]

但是不行。

我的 .htaccess 文件:

RewriteEngine on
RewriteBase /

# hide .php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

# remove multi trailing slashes, for simple x/y/ => x/y
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ / [R,L]

# remove more than one slashes when they are in link, for simple x//y => x/y
RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
RewriteRule . %1/%2 [R,L]

# rewrite all links server/x to server/x.php
RewriteRule ^([^/]+).* .php [L]

这应该将两个斜杠(或更多)转换为一个斜杠:


    RewriteCond  %{REQUEST_URI} \ (.*)//+(.*)\  
    RewriteRule .* %1/%2 [R,L]

您可以使用:

RewriteEngine on
RewriteBase /

# hide .php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

# remove multi trailing slashes, for simple x/y/ => x/y
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ / [R,L]

# remove more than one slashes when they are in link, for simple x//y => x/y
RewriteCond %{THE_REQUEST} //
RewriteRule ^(.+?)/?$ / [R,L,NE]

# rewrite all links server/x to server/x.php
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}\.php -f [NC]
RewriteRule ^(.+?)/?$ .php [L]