使用 Mod_rewrite 重写所有带有子域的请求,我做错了什么?

使用 Mod_rewrite 重写所有带有子域的请求,我做错了什么?

我正在尝试将所有使用子域的请求重写为不带子域的“常规”请求发送到服务器。我创建了下面的 mod_rewrite 代码,但它似乎不起作用。任何建议都非常感谢。

Options +FollowSymlinks
RewriteEngine on
RewriteRule (.*?).mydomain.com/(.*) http://mydomain.com/$2

我希望所有内容仍然显示在用户的地址栏窗口中,如下所示:

http://subdomain.mydomain.com/$2

(其中 $2 是他们最初在地址栏中输入的路径)

答案1

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule

模式最初将与 URL 中主机名和端口之后、查询字符串之前的部分进行匹配。如果您希望与主机名、端口或查询字符串进行匹配,请分别使用带有 %{HTTP_HOST}、%{SERVER_PORT} 或 %{QUERY_STRING} 变量的 RewriteCond。

换句话说,只要失去主机,一切就都好了

RewriteCond %{REMOTE_HOST} ! mydomain.com  # prevents loops
RewriteRule /(.*) http://mydomain.com/$2

相关内容