RewriteCond不匹配?

时间:2012-02-06 16:21:06

标签: mod-rewrite

我已经阅读了几个网址重写帖子,但没有任何帮助我。

基本上在网站上我们有以“.html”(http://www.domain.com/page.html)结尾的页面,我们还保留了其他一些子域名(http://www.domain.com/subdomain.com

所以我试图解决这个问题:http://www.domain.com/subdomain.com 要重定向到:/www/subdomain.com/index.php

我尝试了这个,但是它出了点问题:

RewriteCond %{QUERY_STRING} !\.html$
RewriteCond %{QUERY_STRING} ^([^/.]+)\.([^/.]+)/?$
RewriteRule /www/%1.%2/index.php [L]

我认为我误解了RewriteCond的用法,但我无法找到如何正确使用它。 我错过了什么?

谢谢, 罗布

1 个答案:

答案 0 :(得分:4)

这应该接近:

RewriteCond %{QUERY_STRING} !\.html$
RewriteRule ^([^/.]+)\.([^/.]+)/(.*) /www/$1.$2/index.php?file=$3 [QSA,NC,L]

请注意,我已将最后一部分添加为index.php的查询参数。


哦顺便说一下:

如果这还不够:

两个提示:

如果您在托管环境中(=如果它是您自己的服务器可以修改虚拟主机,不仅仅是.htaccess文件),尝试使用RewriteLog指令:它可以帮助您找出这些问题:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

我最喜欢检查regexp的工具:

http://www.quanetic.com/Regex(别忘了选择ereg(POSIX)而不是preg(PCRE)!)