![在 Web 根目录中提供 PHP 页面,但在子目录中显示内容](https://linux22.com/image/567151/%E5%9C%A8%20Web%20%E6%A0%B9%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%8F%90%E4%BE%9B%20PHP%20%E9%A1%B5%E9%9D%A2%EF%BC%8C%E4%BD%86%E5%9C%A8%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%98%BE%E7%A4%BA%E5%86%85%E5%AE%B9.png)
我在共享托管服务器上有一个网站。我的目录布局如下
/home
/user
/public_html
/pics
/family
public_html 中有一个 index.php 文件。我需要帮助编写 .htaccess 规则,以便
- 当请求 www.domain.org 时提供 index.php 文件
- 当请求 www.domain.org/pics 时强制用户返回 public_html
- 允许用户在请求 www.domain.org/pics/family 时查看目录内容
我尝试了许多 RewriteCond 和 RewriteRule 的组合,但我对文档和示例的理解不够充分,不知道我想要做的事情是否可行。
Web 服务器应用程序是 Apache 的某个版本。
答案1
DirectoryIndex index.php
1)您可以通过在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 All
或AllowOverride 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 文档。