我正在尝试使用子目录作为我的某个域的根文件夹。使用.htaccess,我使用mod_rewrite来完成工作。这是我已有的代码:
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]
这可以完成工作,但不完全。例如:
如果我转到http://domain.com/,则会在index.php
文件夹中显示domain
。如果我转到http://domain.com/test/,它将显示test
文件夹的内容(或403)。 但是如果我转到http://domain.com/test(使用快捷方式,甚至显示文件夹),我会被重定向到http://domain.com/domain/test/。
这不应该发生。如果有的话,它要么从.htaccess做一个掩码(如果正在使用测试),要么只是转到http://domain.com/test/。我试图找到解决这个问题的方法,但事实并非如此。所以我正在寻求你的帮助! :)
非常感谢任何和所有帮助。
答案 0 :(得分:8)
试试这个:它有点粗糙,但应该做你想要的。有一点混乱:我试图做的一些将取决于你的RewriteBase(你可能需要删除一个或多个/字符)。
我基本上添加了一个初始块,专门查找 / domain / 文件夹中的目录,这些目录不以尾部斜杠结尾并添加一个。让我知道它是否有效。
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond /domain/%{REQUEST_URI} -d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /domain/$1/
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]
答案 1 :(得分:3)
评论者是对的,如果您想要use a sub-directory as the root folder for one of my domains
,只需在apache虚拟主机配置中配置它( DocumentRoot )。
答案 2 :(得分:2)
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(.*)$ /domain/$1/ [L]
上面的代码成功完成了我想要的所有事情。
答案 3 :(得分:0)
像这样使用RewriteBase:
RewriteBase / f2f / f2fweb
答案 4 :(得分:0)
帮助我的是我主机上的auto.htaccess生成器!!!!
DirectoryIndex index.php
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www\.)?domain.com/TEST//.*$ [NC]
RewriteRule \.(js|css|jpg|gif|png|bmp|mp4|3gp|m4a|m4r|aac|mp3|ogg|wave)$ - [F]