2

我有以下正则表达式,尽管它只选择一个变量并将其放入用户中,比如用户包含用户/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
4

1 回答 1

1

RewriteCond您要从中捕获 2 个值的正则表达式RewriteRule似乎不正确。

您可以使用:

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标志。

于 2018-09-02T05:27:59.850 回答