httpd 2.4 ProxyPassMatch合并正则表达式中的多个斜杠

时间:2014-08-07 01:14:48

标签: regex apache php fastcgi

我目前使用的代码是

^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/puphpet/puphpet.com/web/$1

适用于正确的网址,例如http://puphpet.dev/app_dev.php/github-btn

如果网址有多个斜杠,则会传递两个斜杠,http://puphpet.dev/app_dev.php//github-btn

多个斜杠打破了我的网站。我知道nginx有一些东西可以将多个斜杠合并在一起,但是无法找到与httpd类似的东西。我已经为比赛尝试了多个正则表达式,但它们似乎并没有像我期望的那样工作。

例如,(.*\.php)(/)(.*)将上述网址与

匹配

$1 /app_dev.php $2 / $3 / github-btn

所以我认为将$1$3传递给代理会起作用,但是它没有。


修改

在ProxyPassMatch的正则表达式上跳了一下之后,我最终得到了这个:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
ProxyPassMatch /(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/puphpet/puphpet.com/web/$1

通过重定向到单个URL来修复URL中的双斜杠。但是,在我看来,一个全新的要求并不是最优的解决方案。透明地重写下面所有进一步匹配的URL是最好的。

0 个答案:

没有答案