【问题标题】:how to set subfolder as root and restrict certain access如何将子文件夹设置为根并限制某些访问
【发布时间】: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


    【解决方案1】:

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

    .htpasswd

    admin:$apr1$EvV5M50w$9IgAqskEg5r2pIIXUzQyp0
    

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

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

    现在打开您的子文件夹,您将被要求输入密码和用户名(在我的示例中为 admin / admin)。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 2018-08-22
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多