【问题标题】:htaccess redirect from www to non-wwwhtaccess 从 www 重定向到非 www
【发布时间】:2014-07-16 11:50:10
【问题描述】:

我是新手。

我的 .htaccess 文件中的代码如下所示:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

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

Redirect 301 /abc/ /abcnew/

我希望它从 www 重定向到非 www,即从 http://www.example.com 重定向到 http://example.com

我复制了:

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

此代码来自此处Generic htaccess redirect www to non-www

我还签入了我的 linux 服务器上的 /etc/apache2/mods-enabled 文件夹。存在“rewrite.load”这个模块。(我认为这可能意味着在我的服务器上启用了重写,但如果我错了,请纠正我。)

Redirect 301 /abc/ /abcnew/

仅供参考,上面的代码工作正常(它将我的旧链接重定向到新链接)。

我也试过了。

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

不适合我。

请帮忙。提前谢谢...

编辑:

this link我找到了这个。但不确定应该编辑什么。谁能指出来。?

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

    您需要在内部重写之前放置external (full) redirect 规则,并确保仅使用mod_rewrite 规则。

    试试这个:

    RewriteEngine on
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
    RewriteRule ^(.*) http://%1/$1 [R=301,NE,L]
    
    RewriteRule ^abc/?$ /abcnew/ [L,NC,R=301]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php/$0 [PT,L] 
    

    【讨论】:

    • 感谢阿努巴瓦。我尝试了这段代码,但仍然无法正常工作。有什么建议吗?
    • 打开 Firebug 然后在浏览器中访问http://www.example.com。在“网络”选项卡中检查您获得了多少重定向。
    • +1,你认为/abcnew 中的初始斜线会导致 Nits 的问题吗?
    • @anubhava:嗨,Anubhava。我在萤火虫中没有看到任何重定向。我还尝试通过删除 abc 重定向来放置此代码并检查,仍然无法正常工作。
    • 好的,首先验证您的.htaccess 是否已启用,方法是在您的.htaccess 上放置相同的垃圾(随机)文本,看看它是否会产生500(内部服务器)错误?如果您收到 500 错误,请告诉我此 .htaccess 的位置以及此 .htaccess 中是否还有其他规则。