.htaccess只为子域重写

时间:2014-06-30 00:25:46

标签: .htaccess url-rewriting

我有以下.htaccess代码,它成功地重写了子域目录。因此,如果用户访问jim.domain.com,他们就会获得placeholder.php?page_type=profile。但是,这也会影响主目录http://domain.com。我喜欢它,所以带有子域的任何东西都被定向到placeholder.php页面,但是使用没有子域的主目录将照常运行,转到主目录中的index.php。我怎么做到这一点?谢谢你的任何建议。

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^exclude.domain.(.*)
RewriteCond %{HTTP_HOST} !^www.domain.(.*)

RewriteCond %{HTTP_HOST} (.*)\.domain\.com

RewriteRule ^$ placeholder.php?page_type=profile [L,QSA]

1 个答案:

答案 0 :(得分:0)

如果您希望test.domain.com的所有请求都像评论一样转到domain.com/placeholder.php?page_type=profile,那么您需要在重写中包含该域

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^exclude.domain.(.*)
RewriteCond %{HTTP_HOST} !^www.domain.(.*)
RewriteCond %{HTTP_HOST} (.*)\.domain\.com
RewriteRule ^$ http://domain.com/placeholder.php?page_type=profile [L,QSA]

这不会如何处理这部分

  

但是使用没有子域的主目录将照常运行,转到主目录中的index.php

因为没有重定向到index.php的文件/目录未命中规则。你需要那些,还是真的只想解决第一部分?

我也想知道您是否想要将profile替换为子域匹配,在这种情况下您想要

RewriteRule ^$ http://domain.com/placeholder.php?page_type=%1[L,QSA]

但这两个示例都不会重写test.domain.com/longer_url的任何路径,因为^$仅匹配空URL路径。但是,在提出合适的Reerite之前,需要决定如何处理路径。