使用^
vs ^(.*)$
vs ^.*$
作为RewriteRule中的通配符有什么区别?
我的目标是将http://carnarianism.com/(任何东西)重定向到http://carnarian.com/的着陆(默认)页面。我找到了以下解决方案,这些解决方案似乎都有效,所以我想知道哪个更适合性能?
RewriteRule^http://carnarian.com/ [R=301,L]
RewriteRule ^.*$ http://carnarian.com/ [R=301,L]
RewriteRule ^(.*)$ http://carnarian.com/ [R=301,L]
所有这些似乎工作正常。这是我在StackOverflow上的第一篇文章,大部分时间我都可以找到答案。
需要明确的是:上面我的.htaccess中的重写规则的质疑是的RewriteCond和WWW处理程序如下:
RewriteEngine On
RewriteBase/
# FROM www. --TO-- NO www. See no-www.org
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTP_HOST} carnarianism\.com$ [NC]
########## The Above Questioned RewriteRule ??? ##########
RewriteRule^http://carnarian.com/ [R=301,L]
注:我开始用下面这个搜索,但我不想因为以下该路径也已通过,我希望它仅转到着陆页。因此,我知道你需要圆括号才能使用$ 1变量。我不想要$ 1变量。
RewriteRule ^(.*)$ http://carnarian.com/$1 [R=301,L]
请参阅http://enarion.net/web/htaccess/migrate-domains/ – Phil
您已经回答了您自己的问题:“[...]您需要圆括号才能使用$ 1变量。” – Gumbo
'这对性能更好?'没有意义的区别。您列出的选项之间的差异将远低于请求时间的1%。绝大多数将是TCP开销,等等。 –