在web根目录中服务PHP页面,但在子目录中显示内容

我有一个共享的托pipe服务器上的网站。 我的目录布局看起来像这样

/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)你可以通过在你的.htaccess文件中添加一个DirectoryIndex index.php来免费得到这个。

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

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

3)你需要使用选项:

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

您需要确保在您的web服务器conf或虚拟主机conf中,您可以覆盖.htaccess文件中的选项。 像AllowOverride AllAllowOverride Indexes 。 还要注意#2,人们仍然可以访问图片中的文件,例如http://www.domain.org/pics/pic1.jpg ,但是如果试图访问目录将会被redirect。

我把它放在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文档中得到了这个想法。