mod_rewrite:从子域名重定向到主域名

mod_rewrite:从子域名重定向到主域名

我有两个域名 - domain.com 和 forum.domain.com,它们指向同一个目录。

我想将所有请求从 forum.domain.com 重定向到 domain.com(例如:forum.domain.com/foo 到 domain.com/forum/foo)而不更改地址栏中的地址(隐藏重定向)。

我写了类似这样的内容并将其放入 .htaccess 文件中:

Options +FollowSymlinks
RewriteEngine on   

RewriteCond %{HTTP_HOST} ^forum\.example\.net$
RewriteRule (.*) http://example.com/forum/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-s [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+) index.php/$1 [L]

这仅当我添加重定向指令时才有效:

RewriteRule (.*) http://example.com/forum/$1 [R,L]

但是它会改变地址栏中的以前的地址。

编辑:

好吧,让我们简单一点。我在本地电脑的 c:\windows\system32\drivers\etc\hosts 末尾添加了这两行:

127.0.0.3   foo.net
127.0.0.3   forum.foo.net

现在,我创建了两个虚拟主机:

<VirtualHost foo.net:80>
    ServerAdmin [email protected]
    ServerName foo.net
DocumentRoot "C:/usr/src/foo"
</VirtualHost>

<VirtualHost forum.foo.net:80>
    ServerAdmin [email protected]
    ServerName forum.foo.net
DocumentRoot "C:/usr/src/foo"
</VirtualHost>

..以及名为“foo”的目录,我在里面放了两个文件:.htaccess 和 index.php。

索引.php:

<?php

echo $_SERVER['PATH_INFO'];
?>

.htaccess 文件:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^forum\.foo\.net$
RewriteCond %{REQUEST_URI} !^/forum/
RewriteCond %{REQUEST_FILENAME} !-s [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+)$ /index.php/forum/$1 [L]

RewriteCond %{HTTP_HOST} !^forum\.foo\.net$
RewriteCond %{REQUEST_FILENAME} !-s [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+) index.php/$1 [L]

当我输入地址时http://forum.foo.net/test在地址栏中显示/论坛/测试这很好。http://foo.net/a/b/c节目/a/b/c这很好。但! http://forum.foo.net/显示空值(应该显示/论坛)。

答案1

启用 mod_proxy 并使用P标志。

相关内容