如何始终使用mod_rewrite从网址中删除WWW?
我使用以下尝试从URL中移除WWW:如何始终使用mod_rewrite从网址中删除WWW?
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://example.com$1 [R=301]
但由于某种原因,这是行不通的。有什么建议么?
尝试:
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
而且没有mod_rewrite
:
<VirtualHost 10.0.0.1:80>
ServerName www.example.com
Redirect permanent/http://example.com/
</VirtualHost>
虚拟主机可以用来通过完成以下网址中的步骤:Setting Up A Virtual Host in Apache。
这里是一个更广义的解决方案:
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule^http://%1%{REQUEST_URI} [L,R=301]
有没有办法检测和重写用户来自的同一个URL方案(http或https)? 'http:// www.example.com /'为'http:// example.com /'和'https:// www.example.com /'为'https:// example.com'。 – 2012-09-11 23:52:15
REQUEST_URI是否包含index.php?出于某种原因,当我访问www.example.com时,它会重定向到www.example.com/index.php – CMCDragonkai 2013-12-03 08:12:56
@CMCDragonkai如果您想追加原始查询字符串,请不要忘记QSA标志。 – jordanbtucker 2015-02-06 18:33:18
凯尔的回答的一个小调整,我把一/在重写规则匹配条件,像
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/(.*)$ http://example.com/$1 [R=301,L]
否则,你会得到一个双斜杠结果。
http://www.example.com/smth -> http://example.com//smth
。 – NilsB 2015-08-07 13:07:42
我总是先使用307(临时重定向),因为如果你弄错了,一些浏览器会永久地缓存它。我最终安装了谷歌浏览器,仅仅是因为即使我删除了整个缓存,我也无法让我的Firefox忘记重定向。
这是一个解决方案,如果你不想要一个硬编码的域名。不要忘记启动重写引擎,否则这将不起作用!
# Start rewrite engine
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
# Rewrite "www.example.com -> example.com"
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule^http://%1%{REQUEST_URI} [R=301,L]
</IfModule>
事情是这样的:在http://www.example.com/的网页生成了过多的重定向。清除您的本网站的Cookie或允许第三方Cookie可以解决此问题。如果没有,这可能是一个服务器配置问题,而不是您的计算机的问题。 *我删除了这些,但网站仍然停机!为什么这样?* – Yeti 2010-03-02 07:38:58
问题1.你是否同时使用两者?问题2.您是否将IP地址更改为正确的值?问题3.你是否拥有example.com? – 2010-03-02 07:40:07
虚拟主机方法的+1。直到你真的需要的时候才使用mod_rewrite。 – bobince 2010-03-02 07:40:10