如何使用.htaccess将非www重定向到www?(还有两个问题.)


How to use .htaccess to redirect non-www to www? (Two more questions...)

摘要

我买了一个域名(假设(www.(mydomain.com(。我有三个希望:首先,当用户在地址栏中输入mydomain.com时,它可以重定向到www.mydomain.com(自动在地址前添加www.(。其次,由于我购买的域名不支持SSL,所以当用户在地址前输入https://时,直接将其转换为http://。第三,当用户输入不存在的URL时,显示消息:"您要查找的页面不存在。"10秒后重定向到我的主页(www.mydomain.com/(。

我的尝试

我在网上搜索过,但刚刚找到了在地址前面自动添加www.的解决方案。下面是结果。

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

问题

  1. 我在上面发现的结果有错误吗
  2. 有没有更好的方法来改善我上面发现的结果
  3. 当用户在地址前输入https://时,如何将https://转换为http://
  4. 当用户输入不存在的URL时,如何显示消息:"您要查找的页面不存在。"并在10秒后重定向到我的主页(www.mydomain.com/(

要在同一规则中强制执行http://www.,您可以在root.htaccess:中使用此代码

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www'. [NC,OR]
RewriteCond %{HTTPS} on
RewriteRule ^ http://www.example.com%{REQUEST_URI} [R=301,L,NE]

要显示404的自定义消息(找不到页面(错误,请使用:

ErrorDocument 404 "<html><head><META http-equiv="refresh" content="10;URL=/><head><body><h1>The page you were looking for doesn't exist</h1></body></html>"

在相同的CCD_ 3中。此消息将显示10秒,然后浏览器将重定向到主页。

请确保在清除浏览器缓存后对此进行测试。

要将https重写为http,请使用以下规则

RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

要添加www,请使用以下规则

RewriteCond %{HTTP_HOST} !^$ RewriteCond %{HTTP_HOST} !^www'. [NC] RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

希望这将帮助您解决问题

WWW重定向使用此:

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

https到http重定向使用此:

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

如果用户收到404页面未找到错误,您可以使用相应的页面重定向用户。在主目录404.html或404.php中有一个页面,并在那里保留重选链接。

非www到www:

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