我知道有很多这方面的问题,但我似乎总是缺乏对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 插入到网址中。有没有人有这个问题?
答案 0 :(得分:0)
我认为答案可能是来自this post by @jonlin。:
的rewrite_base规则如果它在“subdir2”目录中,并且你转到http://example.com/subdir2/foo,mod_rewrite会将相对路径误认为文件路径而不是URL路径,并且由于R标志,你将结束重定向到以下内容:http://example.com/var/www/localhost/htdocs/subdir1。这显然不是你想要的。
我会查看其余的答案,这是非常全面的。