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