【发布时间】:2012-11-20 14:00:59
【问题描述】:
我在我的主机上阅读了一篇关于如何将子文件夹设置为我的域的根目录的文章,但它误导我相信请求将全部发送到 /subfolder/ 而根本不会发送到根目录,那就是不是这样的。
我在根目录的 .htaccess 中使用此代码,不幸的是,它没有按预期工作。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subfolder/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ subfolder/index.php [L]
我想要达到的目标如下:
- 根目录在 /subfolder/
- 对原始真正根的所有请求都被拒绝,就好像它根本不存在一样。例如 phpinfo.php、php.ini,其中的任何页面或杂项都被 /subfolder/ 中设置的错误处理拒绝访问。对“domain.com/whateverhere”的任何请求绝对总是发送到 /subfolder/。
- 如果可能,请限制任何访问 domain.com/subfolder/ 以显示 404 的能力。我认为重定向同样有效。
- 我目前在 domain.com/resources/ 的根目录中使用 /resources/ 文件夹,其中包含脚本、css、图像等,即使重写已将 /subfolder/ 设置为根目录,对 domain.com/resources/ 的请求仍然被接受,即使它不在 /subfolder/ 中。正如我之前所说,我想知道如何真正限制对真正根目录的任何访问,并将所有请求强制到 /subfolder/。
总而言之,我希望将“root”完全设置为/subfolder/,在实际root不可访问中有phpinfo.php和php.ini等重要文件,并且仍然使用.htaccess在真正的像往常一样root。
我知道我在这里问了很多,所以我很抱歉,呵呵。
提前感谢任何可以提供帮助的人。
【问题讨论】:
标签: php apache .htaccess mod-rewrite root