2013-12-16 99 views
2

我使用CodeIgniter的框架,我需要強制從URL中移除WWW,所以我用這個代碼htaccess的刪除www和重定向到URL訪問

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/ 

我怎樣才能解決這個問題?

+0

請參閱本文 - > http://stackoverflow.com/questions/6515081/htaccess-remove-www-from-url-directories –

+0

我也試過這件事,但它不工作。總是重定向到www.mydomain.com/framework/ – cloudacdev

回答

3

更改您的規則的順序:

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] 

否則,你的第二個規則運行,首先,改變URI來/framework/... www的去除規則之前..

+0

感謝您的回放,此代碼不能與帶有www的ajax調用一起使用到此域。我怎樣才能解決這個問題? – cloudacdev

+0

Apache不知道Ajax請求和常規Web請求之間的區別。在你的AJAX調用中究竟發生了什麼,你可以從Firebug中檢查並讓我知道嗎?同時讓我知道什麼是您的AJAX調用的完整URL,並執行任何POST操作? – anubhava

0

試試這個:

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