【问题标题】:How to redirect only www with htaccess如何使用 htaccess 仅重定向 www
【发布时间】:2013-09-10 08:51:12
【问题描述】:

你能帮我把http://example.com重定向到http://www.example.com吗?

我有一些子域(http://sub1.example.com;http://sub2.example.com...),我不希望它们也被重定向。

这是我的 .htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

这样,我得到的是,当我访问 http://example.com 时,它会正确重定向到 http://www.example.com,但是当我访问 http://sub1.example.com 时,它会重定向到 http://www.www.sub1.example.com/sub1_folder/sub1_folder/

提前致谢

【问题讨论】:

  • 尝试RewriteCond %{HTTP_HOST} ^example\.com$ 只针对一个特定的主机名,没有任何子域。
  • @CBroe 成功了,谢谢。让我问你 - 是否有可能有更通用的东西?除了^example\.com$,是否有可能有一些不指向这个特定网址的东西?
  • documentation 只提到对 TestString 使用服务器变量,而不是对 CondPattern 使用。如果它们也可以在该模式下工作(不知道),并且如果您的 SERVER_NAME 仅设置为基本域(本例中为 example.com),那么这可能会起作用。跨度>

标签: .htaccess url redirect web subdomain


【解决方案1】:

如果您知道您的域将是 XXX.com,则可以使用更通用的正则表达式模式:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.com$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

甚至更好:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[a-z]{2,4}$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2019-01-29
    • 2012-10-19
    • 1970-01-01
    相关资源
    最近更新 更多