2017-08-26 51 views
0

我有一個使用PHP框架(CodeIgniter)的網站,我試圖重定向發送到「mydomain.com」www.mydomain.com的所有查詢「我修改了的.htaccess,現在看起來如下:更新.htaccess重定向到「www」

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    # I just added this part 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

    # The default rule of the framework 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [QSA,L] 
</IfModule> 

現在的問題是,當我進入工作正常‘mydomain.com’,用戶正確地重定向,但當他們進入更復雜的地址時,他們也會被重定向到此主頁,如「mydomain.com/Settings」

我該如何解決這個問題?

謝謝

+1

是重定向發生在第一跳或者是兩次重定向?您可以使用http://redirectcheck.com或瀏覽器中的網絡選項卡來查看正在完成的重定向。我問這個問題的原因是因爲你的規則看起來非常好,它可能是來自框架的事實之後的第二次重定向。 – Charles

+1

檢查[這裏](https://github.com/phanan/htaccess/blob/master/README.md#force-www-in-a-generic-way)。 – Tpojka

+0

您是否在config.php文件中將base_url()更改爲www.mydomain.com。 –

回答

0

給這個鏡頭。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 
+0

沒有運氣。我得到相同的結果。 – user1319182

1

這對我的作品(example.com)

<IfModule mod_rewrite.c> 
    RewriteEngine On 

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

    # The default rule of the framework 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [QSA,L] 
</IfModule> 

對於我來說,這個「框架」部分可以改變從服務器到服務器,並以我個人的經驗,我有以下選擇:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# NORMAL SERVER (COMMENT OUT IF GODADDY OR OPTION #3) 
RewriteRule .* index.php/$0 [PT,L] 

# SPECIAL GODADDY LINE (UNCOMMENT IF GODADDY) 
#RewriteRule ^(.*)$ /index.php?/$1 [L] 

# IF NOTHING ELSE WORKS UNCOMMENT THIS ONE 
#RewriteRule^index.php [QSA,L] 

我知道你不是在問「框架」部分,但我想我會提到它。

0

RewriteEngine敘述後添加這個在

RewriteCond %{HTTPS} on 
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]