感谢您阅读我的问题。
我有一个在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"忽略"例如,双引号没有重写。
感谢您的想法和解决方案。
答案 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,
to