我目前将博客设置作为主站点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
。
答案 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 详情。