我有一个需要存在于子文件夹中的网站
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]
答案 0 :(得分:1)
您可以尝试这样做:
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{REQUEST_URI} ^/(.*) [NC]
RewriteRule .* http://example.com/%1 [R=301,L]
答案 1 :(得分:1)
也许,你只是错过了RewriteBase
根据.htaccess
文件的位置,尝试
RewriteBase /
或
RewriteBase /site
在启用301
的情况下从不测试,请参阅此答案 Tips for debugging .htaccess rewrite rules 详情。