我知道有很多问题,但我似乎总是对htaccess文件缺乏完全的了解。我的文件非常简单(与其他项目一样,取自Bluehost):
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?theglobalhuman.com$
RewriteCond %{REQUEST_URI} !^/www/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /www/$1
我的文件夹结构(简而言之)是:
root
|-- app
|--templates
|-- admin
|-- public
|-- tmp
|-- www
|-- .htaccess
其中www
具有索引文件。
所以如果我去website.com
,一切都很好。如果我转到website.com/something/more
,它可以正常工作,它会进入templates/public
文件夹。
但是,如果我转到website.com/admin/more
,它转到templates/admin
文件夹,出于某种原因,htaccess会中断并将www插入url。有人遇到过这个问题吗?
我认为答案可能是@jonlin的这篇文章中的rewrite_base规则。:
如果它在"subdir2"目录中,则转到http://example.com/subdir2/foo,mod_rewrite会将相对路径误认为是文件路径,而不是URL路径,并且由于R标志,您最终会被重定向到以下内容:http://example.com/var/www/localhost/htdocs/subdir1.这显然不是你想要的。
我想看看他的其余回答,它相当全面。