2015-03-02 68 views
1

我有个小问题与此: http://server//file两个或两个以上的斜线 - mod_rewrite的

如何删除此两条斜杠?我试图做到这一点:

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 ^(.+?)/$ /$1 [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 ^([^/]+).* $1.php [L] 

回答

1

您可以使用:

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 ^(.+?)/$ /$1 [R,L] 

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

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

我有问题,链接如:server/file/anothervalue。你能解决它吗? :)我正在考虑它,但我太笨了:/ – ventaquil 2015-03-02 21:32:51

+0

我的代码适用于:http:// server/file // value // more ////但不适用于http:// server ///file/value,当我编写http:// server //文件//将其值更改为server/file/value时,但当它只是服务器///文件时,它不会更改。 – ventaquil 2015-03-02 23:59:51

+0

是的,它正确地从http://domain.com ///////fooobar重定向到http://domain.com/foobar,但从http://domain.com ///////fooobar/重定向酒吧http://domain.com/fooobar/bar不:)但再次感谢,我会尝试自己做。 – ventaquil 2015-03-03 10:53:24

1

这应该转换两条斜线(或以上)为一个:

 

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

相关问题