Apache .htaccess重写规则无意中删除了双斜杠

时间:2013-10-09 16:04:18

标签: regex apache .htaccess mod-rewrite

我有一个简单的重写规则,它传递一个简单的字符串(attr'mode')和一个url(attr target_url)格式为:http://dummypage.com/

RewriteRule ^test/([^/.]*)/(.*)$ /index.php?mode=$1&target_url=$2

转换

mydomain.com/test/stringparam/http://dummypage.com/

mydomain.com/index.php?mode=stringparam&target_url=http:/dummypage.com/

注意它已将http://dummypage.com/更改为http:/dummypage.com/, 为什么它会删除双斜杠?

1 个答案:

答案 0 :(得分:3)

您无法使用RewriteRule匹配此类URI。使用THE_REQUEST变量进行匹配。 THE_REQUEST变量表示Apache从您的浏览器收到的原始请求。

RewriteCond %{QUERY_STRING} ^$
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+test/([^/]+)/([^\s]*)\s [NC]
RewriteRule ^ /index.php?mode=%1&target_url=%2 [L,QSA,NE]