0

我在主机上阅读了一篇关于如何将子文件夹设置为我的域的根目录的文章,但它误导我相信请求将全部发送到 /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]

我想要达到的目标如下:

  • 根目录/子文件夹/
  • 对原始真正根的所有请求都被拒绝,就好像它根本不存在一样。例如 phpinfo.php、php.ini,其中的任何页面或杂项都被 /subfolder/ 中设置的错误处理拒绝访问。对“domain.com/whateverhere”的任何请求绝对总是发送到 /subfolder/。
  • 如果可能,请限制任何访问 domain.com/subfolder/ 以显示 404 的能力。我认为重定向同样有效。
  • 我目前在位于 domain.com/resources/ 的根目录中使用 /resources/ 文件夹,其中包含脚本、css、图像等,即使重写已将 /subfolder/ 设置为根目录,请求域.com/resources/ 仍然被接受,即使它不在 /subfolder/ 中。正如我之前所说,我想知道如何真正限制对真正根的任何访问,并将所有请求强制到 /subfolder/。

总而言之,我希望将“根”完全设置为/子文件夹/,在实际根中无法访问诸如phpinfo.php和php.ini之类的重要文件,并且仍然像往常一样在真正的根中使用.htaccess .

我知道我在这里问了很多,所以我很抱歉,呵呵。

提前感谢任何可以提供帮助的人。

4

1 回答 1

0

您可以将.htpasswd文件添加到子文件夹:

.htpasswd

admin:$apr1$EvV5M50w$9IgAqskEg5r2pIIXUzQyp0

并在您的子文件夹/.htaccess文件中定义它,如下所示:

AuthUserFile /www/site/.htpasswd
AuthType Basic
AuthName "My secret place"
require valid-user

现在打开您的子文件夹,您将被询问一个密码和一个用户名(在我的示例中为admin / admin)。

并将其设置为起始文件夹,您可以随时添加

<?php header( 'Location: /subfolder/' ); die; ?>

在您的 index.php 文件的最顶部,因此它始终会将您重定向到子文件夹。

于 2012-11-20T14:09:37.407 回答