htaccess从www重定向到非www

时间:2014-07-16 11:50:10

标签: regex apache .htaccess mod-rewrite

我是新手。

我的.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我找到了这个。但不确定应该编辑什么。任何人都可以指出。?

1 个答案:

答案 0 :(得分: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]