将子域url重写为根域url

时间:2014-04-27 18:42:23

标签: .htaccess rewrite

我使用以下规则重写对网站根目录中的网页的子域名调用:

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]

RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9/_.-]+)\.domain\.com$ [NC]

RewriteRule .? headlines.php?url=%1 [L,QSA]

这很好用。我将它用于rss - 新闻相关网站。例如:http://economy.headlines.com将在内部查看http://www.headlines.com/headlines.php?url=economy

我还想通过以下方式链接到新闻项目: economy.headlines.com/news/title/id

我该怎么做?因为每次第一条规则都被“解雇”。即使我用[L]标志制定其他规则,其他规则也会被触发,但没有任何反应。

我如何将上述规则与新规则相结合,这些新规则还会查看网站根目录中的文件,但网址中包含参数?

1 个答案:

答案 0 :(得分:0)

如果您评估要重写的请求的路径组件,则应该能够将两者结合起来:

Rewriteengine on
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9/_.-]+).domain.com$ [NC]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ headlines.php?url=%1&category=$1&title=$2&id=$3 [L,QSA]

可能你需要做一些微调,但我认为你明白了:RewriteRule的第一个参数是一个正则表达式,它将请求路径分成它的组件。可以使用您在规则末尾可以看到的$1$2符号来引用这些内容。


编辑:将类别参数添加到RewriteRule,如下面的评论中所述。