htaccess正则表达式来获取更多字段

时间:2018-09-02 03:21:47

标签: regex .htaccess

我有以下正则表达式,尽管它只选择一个变量并将其放入用户中,例如user包含user / url,我将如何修改它以分别在$ 2中获取url变量。

RewriteCond %{HTTP_HOST} ^(^.*)\.example.com$ [NC]
RewriteRule ^(.+/?[^/]*)$ http://example.com/index.php?sub=%1&url=$1 [P,NC,QSA,L]

我需要这个翻译

http://sub.example.com/user/url

http://example.com/index.php?sub=%1&user=$1&url=$2

1 个答案:

答案 0 :(得分:1)

您的正则表达式从RewriteCondRewriteRule捕获2个值似乎不正确。

您可以使用:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ [NC]
RewriteRule ^([^/]+)(?:/([^/]+))?/?$  http://example.com/index.php?sub=%1&user=$1&url=$2 [P,NC,QSA,L]

由于您使用的是mod_proxy标志,因此我假设您已经设置了P