在 Web 根目录中提供 PHP 页面,但在子目录中显示内容

在 Web 根目录中提供 PHP 页面,但在子目录中显示内容

我在共享托管服务器上有一个网站。我的目录布局如下

/home
    /user
        /public_html
            /pics
                /family

public_html 中有一个 index.php 文件。我需要帮助编写 .htaccess 规则,以便

  1. 当请求 www.domain.org 时提供 index.php 文件
  2. 当请求 www.domain.org/pics 时强制用户返回 public_html
  3. 允许用户在请求 www.domain.org/pics/family 时查看目录内容

我尝试了许多 RewriteCond 和 RewriteRule 的组合,但我对文档和示例的理解不够充分,不知道我想要做的事情是否可行。

Web 服务器应用程序是 Apache 的某个版本。

答案1

DirectoryIndex index.php1)您可以通过在public_html中的.htaccess文件中添加来免费获取此功能。

2)要将请求重新路由到/pics,您可以使用以下一组重写规则:

RewriteRule ^pics/?$ http://www.domain.org/ [R,L]

3)您需要使用以下选项:

<Directory "/home/user/public_html/pics/family">
    Options Indexes
</Directory>

您需要确保在您的 web 服务器配置文件或虚拟主机配置文件中,您可以覆盖 .htaccess 文件中的选项。例如AllowOverride AllAllowOverride Indexes。另请注意,使用 #2,人们仍然能够访问图片中的文件,例如http://www.domain.org/pics/pic1.jpg,但如果尝试仅访问目录就会被重定向。

答案2

我把它放在public_html / .htaccess中

RewriteEngine On
RewriteCond %{REQUEST_URI} "/pics/" [OR]
RewriteCond %{REQUEST_URI} "/pics/family/"
RewriteRule (.*) $1 [L]

public_html/pics/.htaccess 中没有任何内容,
我将其放在 public_html/pics/family/.htaccess 中

Options +Indexes

我删除了index.html。

之后,一切都按照我想要的方式进行。我的想法来自此 Drupal 文档

相关内容