2013-11-14 64 views
1

我試圖確保url爲了規範化的原因總是在www前面。.htaccess確保www重定向不正確

不幸的是,當我把下面的網址在:

http://website.net/handbags/1/12/this-is-some-text

在這裏重定向我:

http://www.website.net/?controller=handbags&path=1/12/this-is-some-text

我想補充它工作正常使用時:

http://www.website.net/handbags/1/12/this-is-some-text

我想給我在這裏重定向...

http://www.website.net/handbags/1/12/this-is-some-text

我不知道這可能是導致此錯誤。這裏是我的.htaccess文件:

<IfModule mod_rewrite.c> 

    RewriteEngine on 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    # CORE REDIRECT 
    RewriteRule ^([a-zA-Z]*)/?(.*)?$ index.php?controller=$1&path=$2 [NC,L] 

    # ENSURE WWW 
    RewriteCond %{HTTP_HOST} !^www\.    [NC] 
    RewriteCond %{HTTP_HOST} ^([^.]+\.[a-z]{2,6})$ [NC] 
    RewriteRule ^(.*)$  http://www.%1/$1  [R=301,L] 

</IfModule> 
+0

您是否嘗試過在「#CORE REDIRECT」部分之前移動「#ENSURE WWW」代碼? – Martin

+0

@Martin Cernac - 是的,我試過重新安排,它給了我「致命錯誤:類'controller_index'找不到'即使使用正確的URL。如果我刪除www,它也會給我提供非乾淨的網址 –

+0

嗯,這與.htaccess完全無關,因爲它顯然是一個PHP錯誤。 –

回答

1
<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/

    # ENSURE WWW 
    RewriteCond %{HTTP_HOST} !^www\.    [NC] 
    RewriteCond %{HTTP_HOST} ^([^.]+\.[a-z]{7})$ [NC] 
    RewriteRule ^(.*)$  http://www.%1/$1  [R=301,L] 

    # CORE REDIRECT 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^([a-zA-Z]*)/?(.*)?$ index.php?controller=$1&path=$2 [NC,L] 
</IfModule> 

你可以做什麼,我之前所做的那樣;然而,它只是重定向到http://www.website.net/handbags/1/12/this-is-some-text,然後它立即打到「CORE REDIRECT」規則併發送給http://www.website.net/?controller=handbags&path=1/12/this-is-some-text

是否有一個原因,當他們去www時,你不希望它重定向到「?controller = handbags」?

UPDATE

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/

    # ENSURE WWW 
    Rewritecond %{HTTP_HOST} !^www\.website\.net 
    RewriteRule ^(.*)$  http://www.website.net/$1  [R=301,L] 

    # CORE REDIRECT 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^([a-zA-Z]*)/?(.*)?$ index.php?controller=$1&path=$2 [NC,L] 
</IfModule> 
+0

是的,我正在構建一個MVC框架,並且我希望看起來乾乾淨淨的url :) –

+0

然後,您需要刪除CORE REDIRECT規則。 –

+0

我需要這個規則,因爲我需要拆分url並將它發送到$ _GET數組供php控制器使用 –

0

每當你的# CORE REDIRECT比賽,其他的規則,甚至沒有檢查爲核心的重定向規則具有L標誌設置。那些告訴Apache停止嘗試其他規則。刪除該標誌或更改規則。 ;)

+0

當我刪除萬維網時,仍然給我重定向的非乾淨看起來的網址:) –

+0

它給你什麼網址,你喜歡什麼網址?更多的上下文現在不會是一件壞事;) –

+0

只是增加了我想將url改寫爲 –