【发布时间】:2014-03-03 15:58:34
【问题描述】:
我知道这个论坛和互联网上已经有很多关于这个问题的答案。但是我尝试的一切都不适合我,我不知道为什么。所以这就是我问这个问题的原因。
我正在使用 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 - how to force "www." in a generic way?
- https://expressionengine.stackexchange.com/questions/9853/site-doesnt-work-with-www-at-the-start-of-the-address/9864#9864
- https in htaccess and order of rules (using Expression Engine)
在我看来,最后一个有最明确的解决方案,所以我将它添加到我的 .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设置是否可能与此有关?
【问题讨论】:
-
是否有任何其他代码/规则从 URL 中删除
www -
我不知道!此外,如果我键入 www.domain.nl,它会(重定向)到 domain.nl。 www.domain.nl > domain.nl 有一个 DNS CNAME 规则。可以这样吗..?
-
是的,肯定是这样,因为 CNAME 和重写规则相互矛盾。
-
我将此 CNAME 记录值的值更改为 www.domain.nl。现在等着看这是否有效!
-
您需要在 plesk 控制面板上更改它,您访问有问题的域并将非 www 更改为 www 或将其设置为无,在
subscription > Web Hosting Settings > Preferred Domain上。
标签: .htaccess mod-rewrite