2013-11-14 65 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改写为 –