删除URL中的双斜杠并删除index.php Apache

时间:2016-04-15 14:09:56

标签: php apache .htaccess post

感谢您阅读我的问题。

我有一个在Apache webserver上运行的应用程序(php)(目前在旧的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]  

在某些请求中,应用程序会创建像

这样的帖子请求
http://www.xyz.yz//targetname/targetname2/

在网址路径中双击//。

在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"忽略"例如,双引号没有重写。

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

1 个答案:

答案 0 :(得分:2)

To remove multiple slashes after the domain extension, you could use the following rule before othe Rules in htaccess:

RewriteEngine on

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

This will convert multiple slashes into one,

  • example.com////foo

to

  • example.com/foo