1

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

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

我已经使用 htaccess 进行了几次尝试并接近了几次,但总是有问题。以下是使我最接近预期结果的 2 次尝试:

第一次尝试

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/,但不会屏蔽 URL(地址栏将显示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]

这让我最接近。它以我希望它为所有页面的方式重定向和屏蔽 URL /blog/(例如blog.mydomain.com.au/whatever/重定向到www.mydomain.com.au/blog/whatever/但将 URL 屏蔽为博客。 mydomain.com.au/whatever/),但它不这样做blog.mydomain.com.au,它被重定向到www.mydomain.com.au.

4

1 回答 1

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]

当一切按预期工作时,您可以更改RR=301.

永远不要在启用的情况下进行测试,有关详细信息301,请参阅此答案 提示调试 .htaccess 重写规则

于 2013-04-23T14:47:49.897 回答