2016-04-15 64 views
1

感谢您阅读我的问题。删除URL中的双斜杠并删除index.php Apache

我有一个应用程序(PHP)在Apache网络服务器上运行(此刻在旧的Apache 2.2.17上)。现在我将把Apache升级到2.4.18。

为了从url中删除index.php,有一个.htaccess文件。与此规则。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule .* index.php/$0 [PT,L] 

在某些请求的应用程序创建POST请求喜欢

http://www.xyz.yz//targetname/targetname2/ 

双斜线// URL路径。

在Apache 2.2.17上这个url没有问题,但Apache 2.4.18创建了404错误。

我玩过很多像这样的重写规则:

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ [NC] 
RewriteRule . %1/%2 [R=307,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule .* index.php/$0 [PT,L] 

但现在的客户端发送POST请求的两倍。那么我怎么能告诉Apache不用重写例如“忽略”双引号。

感谢您的想法和解决方案。

回答

2

到域扩展后删除多个斜线,你可以在htaccess的使用以下规则行吟诗人规则之前:

RewriteEngine on 

RewriteCond %{THE_REQUEST} //+(.+)\sHTTP 
RewriteRule^/%1 [L,R] 

这将多个斜线转换成一个,

  • example.com/ ///富

  • example.com/foo