Apache .htaccess确保www重定向不正确

Apache .htaccess确保www重定向不正确,apache,.htaccess,Apache,.htaccess,出于规范化的原因,我试图确保URL前面总是有www 不幸的是,当我将以下url放入时: 它将我重定向到这里: 我想补充一点,它在使用时效果良好: 我想让它把我重定向到这里 我不确定是什么导致了这个错误。这是我的.htaccess文件: <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %

出于规范化的原因,我试图确保URL前面总是有www

不幸的是,当我将以下url放入时:

它将我重定向到这里:

我想补充一点,它在使用时效果良好:

我想让它把我重定向到这里

我不确定是什么导致了这个错误。这是我的.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>

重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
#核心重定向
重写规则^([a-zA-Z]*)/?(.*)?$index.php?controller=$1&path=$2[NC,L]
#确保万维网
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写条件%{HTTP\u HOST}^([^.]+\.[a-z]{2,6})$[NC]
重写规则^(.*)$http://www.%1/$1[R=301,L]

重新启动发动机
重写基/
#确保万维网
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写条件%{HTTP\u HOST}^([^.]+\.[a-z]{7})$[NC]
重写规则^(.*)$http://www.%1/$1[R=301,L]
#核心重定向
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^([a-zA-Z]*)/?(.*)?$index.php?controller=$1&path=$2[NC,L]
你可以做我上面所做的;然而,它只是重定向到,然后它会立即点击“核心重定向”规则并将您发送到

您是否有理由不希望它在进入www时重定向到“?controller=手提包”

更新

<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>

重新启动发动机
重写基/
#确保万维网
重写cond%{HTTP_HOST}^www\.website\.net
重写规则^(.*)$http://www.website.net/$1[R=301,L]
#核心重定向
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^([a-zA-Z]*)/?(.*)?$index.php?controller=$1&path=$2[NC,L]

重新启动发动机
重写基/
#确保万维网
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写条件%{HTTP\u HOST}^([^.]+\.[a-z]{7})$[NC]
重写规则^(.*)$http://www.%1/$1[R=301,L]
#核心重定向
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^([a-zA-Z]*)/?(.*)?$index.php?controller=$1&path=$2[NC,L]
你可以做我上面所做的;然而,它只是重定向到,然后它会立即点击“核心重定向”规则并将您发送到

您是否有理由不希望它在进入www时重定向到“?controller=手提包”

更新

<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>

重新启动发动机
重写基/
#确保万维网
重写cond%{HTTP_HOST}^www\.website\.net
重写规则^(.*)$http://www.website.net/$1[R=301,L]
#核心重定向
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^([a-zA-Z]*)/?(.*)?$index.php?controller=$1&path=$2[NC,L]


只要您的
#CORE REDIRECT
匹配,就不会检查其他规则,因为CORE REDIRECT规则设置了
L
标志。这些规则告诉Apache停止尝试其他规则。删除该标志或更改规则。;)

只要您的
#CORE REDIRECT
匹配,就不会检查其他规则,因为CORE REDIRECT规则设置了
L
标志。这些规则告诉Apache停止尝试其他规则。删除该标志或更改规则。;)

在“#核心重定向”部分之前,您是否尝试过向上移动“#确保WWW”代码?@Martin Cernac-是的,我尝试过重新安排,即使使用正确的url,它也会给我“致命错误:找不到类“controller_index”。如果我删除www,它也会给我非干净的URL,这与.htaccess完全无关,因为这显然是一个PHP错误。@Johannes H-这不是PHP错误。如果我像示例中那样使用它,那么就没有php错误。我指的是“致命错误:找不到类‘controller_index’”。APache无法输出这些东西-必须来自不同的源。您是否尝试过在“#CORE REDIRECT”部分之前将“#sure WWW”代码向上移动?@Martin Cernac-是的,我尝试过重新安排,即使使用正确的url,它也会给我“致命错误:找不到类‘controller_index’”。如果我删除www,它也会给我非干净的URL,这与.htaccess完全无关,因为这显然是一个PHP错误。@Johannes H-这不是PHP错误。如果我像示例中那样使用它,那么就没有php错误。我指的是“致命错误:找不到类‘controller_index’”。APache无法输出这样的东西-这必须来自不同的源。是的,我正在构建一个MVC框架,我想要干净的url:)然后您需要删除核心重定向规则。我需要该规则,因为我需要拆分url并将其发送到$\u GET数组中供php控制器使用。我现在看到发生了什么。我修改过的代码对你有用吗?这意味着什么?“它正在将controller=index发送到$\u GET数组中”这是否意味着我的答案修复了您的问题?否?是,我正在构建一个MVC框架,我想要干净的url:)然后您需要删除核心重定向规则。我需要该规则,因为我需要拆分url并将其发送到$\u GET数组中,供php控制器使用。我现在看到发生了什么。我修改过的代码对你有用吗?这意味着什么?“它正在将controller=index发送到$\u GET数组中”这是否意味着我的答案修复了您的问题?当我删除www时,仍然会在重定向中为我提供外观不干净的URL:)它为您提供了什么URL,以及您希望有什么URL?多一点上下文就不是件坏事;)刚刚添加了我想重写的url,我已经稍微编辑了我的代码。另外,我注意到您正在检查一个长度介于2到6之间的域。你的域名有多长?我有多长?它在现实中有7个字符长