将子域重定向到动态生成的文件夹并屏蔽该域

时间:2013-04-23 13:20:27

标签: .htaccess mod-rewrite redirect mask subdomain

我目前将博客设置作为主站点mydomain.com.au/blog/的子文件夹,但/blog是通过PHP动态生成的,并且实际上并不存在。

我创建了一个子域blog.mydomain.com.au,我试图让它显示所有内容,就像mydomain.com.au/blog/一样,但屏蔽了网址,以便显示blog.mydomain.com.au

我使用htaccess进行了几次尝试并且接近了几次,但总有一些问题。以下是让我最接近预期结果的两次尝试:

第一次尝试

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^blog\.mydomain\.com\.au$
RewriteRule ^.*$ http://www.mydomain.com.au/blog%{REQUEST_URI} [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

这会将blog.mydomain.com.au重定向到www.mydomain.com.au/blog/,但不会屏蔽网址(地址栏会显示www.mydomain.com.au/blog/)。

第二次尝试

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com\.au$ [NC]
RewriteRule blog/(.*) http://blog.mydomain.com.au/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

这让我最接近。它会按照我/blog/下所有网页的方式重定向和屏蔽网址(例如 blog.mydomain.com.au/whatever / 重定向到 www.mydomain。 com.au/blog/whatever / 但将网址屏蔽为 blog.mydomain.com.au/whatever / ),但不会对blog.mydomain.com.au执行此操作,它被重定向到www.mydomain.com.au

1 个答案:

答案 0 :(得分:0)

这里有两个不同的要求。第一个是重写,如果请求是blog.mydomain.com.au并且您删除了规则替换中的域部分和R标记,那么它将起作用

RewriteCond %{HTTP_HOST} ^blog\.mydomain\.com\.au$ [NC]
RewriteRule !^blog/ /blog%{REQUEST_URI} [L]

第二个是实际的重定向,如果请求是www.mydomain.com.au/blog/

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com\.au$ [NC]
RewriteRule blog/(.*) http://blog.mydomain.com.au/$1 [R,L]

如果一切正常,您可以将R更改为R=301

在启用301的情况下

从不测试,请参阅此答案 Tips for debugging .htaccess rewrite rules 详情。