我有一个子域,我想使用mod_rewrite重定向到不同的位置。例如:
subdomain.example.com - > www.example.com/subdomain
我不想将重定向发送到浏览器(因此它不知道页面不同)。
BTW subdomain.example.com有一条指向example.com的CNAME记录。
修改
另一个例子,只是为了澄清。这很简单:如果在浏览器中输入http://x.abc.com,Apache将返回http://www.abc.com/x的内容。
答案 0 :(得分:3)
如果两个域共享同一目录,则可以执行此操作以重写内部请求:
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$
RewriteRule !^subdomain/ subdomain%{REQUEST_URI}
问题澄清后:这个适用于我:
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$
RewriteCond %1.%{THE_REQUEST} ^([^.]+)\.[A-Z]+\ (/[^\ ]*)
RewriteCond %{DOCUMENT_ROOT}$1 !-d
RewriteRule ^([^/]+)? %1%2
但你最好跟Brandon说的那样。
答案 1 :(得分:1)
除了上面提到的Gumbo之外,您还可以使用Apache的VirtualDocumentRoot语句将URL动态映射到磁盘上的动态位置。它允许您使用URL的一部分在磁盘上构建路径。有关更多信息,请查看此链接:
http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html
例:
URL = http://sub.example.com/dir/page.html
Server Path = /var/www/site.com/htdocs/sub/dir/page.html
VirtualDocumentRoot = /var/www/%-2.0.%-1.0/htdocs/%-3/
答案 2 :(得分:0)
RewriteCond %{HTTP_HOST} ^([^.]+)\.abc\.com$
RewriteRule ^(.*)$ http://www.abc.com/%1$1 [R=301]