1

如果 %{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]
4

1 回答 1

1

您不能%在 a 的表达式(第二部分)中包含变量RewriteCond。但是您可以使用 a\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
于 2012-08-08T20:31:21.117 回答