当前位置:  开发笔记 > 编程语言 > 正文

通用htaccess将www重定向到非www

如何解决《通用htaccess将www重定向到非www》经验,为你挑选了9个好方法。

我想重定向www.example.comexample.com.以下htaccess代码实现了这一点:

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

但是,有没有办法以通用方式执行此操作而不对域名进行硬编码?



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

与迈克尔相同,除了这个有效:P


它将`http:// www.domain.com /`重定向到`http:// domain.com //`.你应该在`RewruteRule`中添加`/`.这适用于我`RewriteRule ^ /(.*)$ http://%1/$ 1 [R = 301,L]`.
如果它不起作用,你可能会错过`RewriteEngine On`前体使它工作.
我和弗拉基米尔有同样的问题,它用双斜线重定向到`http:// domain.com //`.所以我做了'RewriteRule ^(.*)$ http://%1 $ 1 [R = 301,L]`它似乎到目前为止工作
@Ben,我将如何反向使用这个*添加*www到非www网站?
请使用以下解决方案而不是重写引擎,优雅更快:http://stackoverflow.com/questions/1100343/apache-redirect-from-non-www-to-www

2> Andron..:

但是如果我们需要为单独的http和https执行此操作:

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

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]


@BobbyS我在[本文](https://simonecarletti.com/blog/2016/08/redirect-domain-http-https-www-apache/)中使用了该解决方案.它将www和HTTP重定向到非www HTTPS,并处理尾随的`/`.
www.example.com/重定向到example.com//是否可以删除多余的斜杠?

3> Dmitriy..:

非www重定向到www(两者:http + https)

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

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]


@nightcoder这是因为我反向重定向的解决方案(从非www到www)而不是Andron的
注意:如果您打算将子域名用于其他目的,此解决方案可能会导致一些问题。例如,app.yourdomain.com将被重定向到www.app.yourdomain.com。

4> William Denn..:

如果你想在httpd.conf文件中执行此操作,则可以在没有mod_rewrite的情况下执行此操作(显然它对性能更好).


  ServerName www.example.com
  Redirect 301 / http://example.com/

我在这里得到了答案:https://serverfault.com/questions/120488/redirect-url-within-apache-virtualhost/120507#120507



5> Salman A..:

以下是将www URL重定向到no-www的规则:

#########################
# redirect www to no-www
#########################

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

以下是将无www URL重定向到www的规则:

#########################
# redirect no-www to www
#########################

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

请注意,我使用NEflag来阻止apache转义查询字符串.如果没有此标志,apache会将请求的URL更改http://www.example.com/?foo%20barhttp://www.example.com/?foo%2250bar



6> Michael Cram..:
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^/(.*)$ http://%1/$1 [R]

RewriteCond 在"www" 之后捕获HTTP_HOST变量中的所有内容.并将其保存在%1中.RewriteRule捕获URL(没有前导"/")并将其保存在$ 1中.



7> Greg..:

试试这个:

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

如果主机以www开头,我们将整个主机粘贴到URL的起点,然后取下"www".


我正在使用Apache/2.2.9(Unix).它适用于www.website,它重定向到网站但是对于以下内容:http://www.website/test - >转到:http://www.websitetest/我通过添加另一个/第二个错误修复此问题:http: //www.website/test/n转到http://www.websitetest/n/n

8> Gregor Macgr..:

完整的通用WWW处理程序,http/https

我没有看到完整的答案.我用它来处理WWW包含.

    通用.不需要域信息.

    在主域名上强制WWW:www.domain.com

    删除子域名上的WWW:sub.domain.com

    保留HTTP/HTTPS状态.

    允许域/子域的单个cookie

请告诉我这是如何工作的,或者我是否留下了漏洞.

RewriteEngine On
RewriteBase /

# Force WWW. when no subdomain in host
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC]
RewriteCond %{HTTPS}s ^on(s)|off [NC]
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Remove WWW. when subdomain(s) in host     
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|off [NC]
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)(.+\.)(.+\.)(.+)$ [NC]
RewriteRule ^ %1%3%4%5%{REQUEST_URI} [R=301,L]



9> 小智..:

我发现,有很多关于htaccess重定向的错误信息.首先,如果您希望此代码能够运行,请确保您的站点在使用Apache的Unix上运行,而不是在Windows主机上运行.

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]

RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

(确保每行文本之间没有行间距;我在行之间添加了一个额外的空格,以便在此窗口中呈现正常.)

这是一段代码,可用于将您网站的www版本指向http://版本.还可以使用其他类似的代码.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有