0

我有一个需要存在于子文件夹中的网站

example.com/site

但我正在尝试使用 .htaccess 删除任何包含 www 的链接(以确保 codeigniter csrf 不会引发错误),所以我添加了

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

当指定了页面标识符时,这很有效,所以

www.example.com/site/book rewrites to example.com/site/book

但是当没有指定页面标识符时,我得到一个 404

www.example.com/site rewrites to example.com/site//usr/local/pem/vhosts/103480/webspace/httpdocs/new

我想知道是否有人可以指出我正确的方向?

这是我的完整 .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.example\.com)?$
RewriteRule ^(.*)$ http://example.com/site/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 
4

2 回答 2

1

你可以试试这个:

RewriteCond %{HTTP_HOST} ^www\.    [NC]
RewriteCond %{REQUEST_URI} ^/(.*)  [NC]
RewriteRule .*  http://example.com/%1 [R=301,L]
于 2013-04-23T13:27:24.473 回答
1

也许,你只是缺少一个RewriteBase

根据.htaccess文件的位置,尝试

RewriteBase /

或者

RewriteBase /site

永远不要在启用的情况下进行测试,有关详细信息301,请参阅此答案 提示调试 .htaccess 重写规则

于 2013-04-23T14:59:13.063 回答