1

我有一个子域,我想使用 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的内容。

4

3 回答 3

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

但你最好听从布兰登所说的。

于 2009-02-09T22:59:44.733 回答
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/

于 2009-02-10T00:54:28.080 回答
0
RewriteCond %{HTTP_HOST} ^([^.]+)\.abc\.com$
RewriteRule ^(.*)$       http://www.abc.com/%1$1   [R=301]
于 2009-02-10T00:57:37.323 回答