我正在尝试将所有使用子域的请求重写为不带子域的“常规”请求发送到服务器。我创建了下面的 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