htaccess删除www并重定向到已访问的url


htaccess remove www and redirect to accessed url

我使用的是codeigniter框架,我需要强制从url中删除www,所以我使用这个代码

RewriteEngine on
RewriteCond $1 !^(index'.php|css|images|js|plugins|scripts|fancybox|uploads|mobile|robots'.txt)
RewriteRule ^(.*)$ /framework/index.php?/$1 [L]
RewriteCond %{HTTP_HOST} ^www'.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI}/$1 [R=301,QSA,NC,L]

此代码强制删除www。但问题是当用户访问带有www 的链接时

eg:www.mydomain.com/framework/article/sometestarticle368/

它正在重定向到

www.mydomain.com/framework/

我该怎么解决这个问题?

更改规则的顺序:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www'.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI}/$1 [R=301,NE,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index'.php|css|images|js|plugins|scripts|fancybox|uploads|mobile|robots'.txt)
RewriteRule ^(.*)$ /framework/index.php?/$1 [L,QSA]

否则,您的第二条规则将首先运行,并在www删除规则之前将URI更改为/framework/...。。

试试这个:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www'.yoursite'.com [NC]
RewriteRule (.*) http://yoursite.com/$1 [R=301,L]
  • 谢谢