4

我使用的是 Cakephp 2.0,我的网站域名是 www.sample.com,如果我尝试访问 sample.com(没有 www),那么它会转到 www.sample.com,这很好。但我的问题是我的域包含很多页面,例如:

> http://www.sample.com/users/login
> http://www.sample.com/users/add

如果我像http://sample.com/users/login这样访问上面的网址,那么它会重定向到

>  http://www.sample.com/index.php?url=users/login

但它需要重定向到

   http://www.sample.com/users/login

我已经编写了以下代码 .htaccess 文件(在 app 文件夹之前)来重定向

Rewritecond %{http_host} ^sample.com [NC]
Rewriterule ^(.*)$ http://www.sample.com/$1 [R=301,NC]

在 webroot 文件夹中,我有一个包含以下代码的 .htacces 文件,这可能是我认为的问题

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]

4

2 回答 2

3

您是要始终删除 www 还是始终保留 www?这将添加它:

## Add www
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

## CakePHP
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
于 2012-11-08T10:46:28.580 回答
0

尝试编写下一条规则:

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

在 app/webroot/.htaccess 文件上,而不是在 app 的文件夹 .htaccess 上。它非常适合我。

于 2012-11-08T10:46:52.550 回答