如果%{REQUEST_URI}以%{HTTP_HOST}开头,如何重写?
即。 http://example.com/example.com_custom_text - > http://example.com/index.php?q=special&info=example.com_custom_text
由于普遍性,%{HTTP_HOST}的使用很重要。
不起作用:
RewriteCond %{REQUEST_URI} ^%{HTTP_HOST}
RewriteRule ^(.*)$ index.php?q=special&info=$1 [L,QSA]
答案 0 :(得分:1)
%
的表达式(第2部分)中不能包含RewriteCond
个变量。但您可以使用\1
反向引用相同的匹配,并将URI和主机组合在一起,如下所示:
RewriteCond %{HTTP_HOST};%{REQUEST_URI} ^([^|]+);/\1
因此,如果请求是:http://example.com/some_path
:
%{HTTP_HOST};%{REQUEST_URI}
= example.com;some_path
^([^|]+)
匹配example.com
和\1
!= some_path
如果请求是:http://example.com/example.com_some_path
:
%{HTTP_HOST};%{REQUEST_URI}
= example.com;example.com_some_path
^([^|]+)
匹配example.com
,\1
匹配example.com_some_path