强制www。在URL名称中通过.htaccess

时间:2014-03-03 15:58:34

标签: .htaccess mod-rewrite

我知道在这个论坛和互联网上已经有很多关于这个问题的答案。但我尝试的一切都不适合我,我不知道为什么。所以这就是我问这个问题的原因。

我正在使用ExpressionEngine CMS运行一个网站。要从URL中删除index.php,有一个小的.htaccess规则,下面提到并且工作正常。

RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

htaccess文件中的所有代码都运行正常。但是现在我想在URL中强制www.,因为当URL没有www.时,某些AJAX脚本不起作用。所以我在这个论坛上找到了一些主题:

在我看来,最后一个有最明确的解决方案,所以我将其添加到我的.htaccess文件中。

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

我的.htaccess文件现在看起来像这样:

RewriteEngine on

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

# remove index.php
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

然而,这给了我一个ERR_TOO_MANY_REDIRECTS错误。

我尝试了所有其他类型的方法,但我不断收到此错误,我不知道为什么。我试图通过htaccess强制www.的所有内容都不起作用或给我这个错误。

发生了什么事? DNS设置是否可能必须对此进行操作?

1 个答案:

答案 0 :(得分:1)

您需要在Plesk控制面板上进行更改,访问相关域并将non-www更改为www或将其设置为none

您查找的选项位于subscription > Web Hosting Settings > Preferred Domain

如果您将其设置为none,则可以使用.htaccess规则。