我被告知要使用
RewriteRule ^error/(.*) index.php?error=$1 [L]
RewriteRule ^file/(.*) index.php?file=$1 [L]
和
RewriteCond %{HTTP_HOST} !^www\.mysite\.com$ [NC]
之前,但它并没有真正帮助我。
我正在使用通配符子域,我该怎么做这个条件:
RewriteCond %{HTTP_HOST} !^www\.mysite\.com$ [NC]
动态,就好像它是任何子域名(除了www。)所以我需要改变什么。
答案 0 :(得分:0)
我不确定我理解你的问题,但可能有助于回忆起RewriteCond的第二个版本是一个正则表达式,所以你可以这样写:
RewriteCond %{HTTP_HOST} ^[a-z]+\.mysite\.com$ [NC]
至于排除www,你可以链接规则(它们是一起的),或者用你的正则表达式来表达。我建议前者,因为它通常更容易遵循。
答案 1 :(得分:0)
我认为你不理解Gumbo's advice。我把它包括在这里:
# stop rewriting for the host names example.com and www.example.com
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^ - [L]
RewriteRule ^error/(.*) index.php?error=$1 [L]
RewriteRule ^file/(.*) index.php?file=$1 [L]
这专门针对www.example.com和example.com执行不重写。如果我们在 example.com的任何其他子域中,则错误/和文件/重写将适用。
如果你想反转测试,可以这样做:
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$
RewriteRule ^error/(.*) index.php?error=$1 [L]
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$
RewriteRule ^file/(.*) index.php?file=$1 [L]
答案 2 :(得分:0)
我使用了php并为我的框架创建了一个系统,我认为它在很多方面都更加高效和安全,但非常感谢您的建议!
:< 3
答案 3 :(得分:0)
这让我摆脱了构建复杂正则表达式的类似情况,它也可以帮助你。