【发布时间】:2013-11-06 01:35:05
【问题描述】:
我的.htaccess 可能有问题
我使用 cakephp 框架 (2.0) 并使用 .htacces 将 non-www 重定向到 www
使用此代码:
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
现在的问题是,当有人点击链接http://mysite.nl/controller/view/E1
他们转到http://www.mysite.nl/index.php
而不是 http://www.mysite.nl/controller/view/E1 (带 www)
而这会在 mysite.nl 上重写为 www.mysite.nl
谁能告诉我我做错了什么?我已经搜索了不同类型的重写规则,但没有运气。
注释后的完整 .htaccess 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
【问题讨论】:
-
你能否在你的主 .htaccess 中将此规则设为 第一条规则。
-
现在就这样(检查更新)
-
通过此更改,您可以在新浏览器中进行测试吗?
-
奇怪,当我在 Internet Explorer 中执行此操作时,它可以工作,所以你的意思是,我需要清理我在 chrome 上的缓存,这样我才能看到它可以工作?
-
是的,清除缓存将使 chrome 工作。
标签: regex apache .htaccess cakephp mod-rewrite