Apache Rewrite:显示同一目录中两个目录的文件

时间:2012-01-29 08:25:28

标签: apache mod-rewrite

我需要从浏览器中同一目录中的两个目录访问文件。

视觉上目录可能如下所示:

/public_html/www.example.com/xml /

/ XML /

/public_html/.htaccess

重要说明:此设置支持多个域。

/public_html/www.example1.com /

/public_html/www.example2.com /

http://www.example.com/xml/ 请求的XML文件位于 /public_html/www.example.com/xml / ,如果该文件不存在服务器路径然后我需要检查 / xml / 服务器路径。

显然,从浏览器我们将访问 / public_html / xml / 路径(例如 www.example.com/xml / ),所以让我们说我们可以看到Apache生成的目录索引生成了所有XML文件的链接。我希望能够从 example.com/xml / 访问 / xml / 目录中的文件。

还存在两个目录中都存在确切名称的文件的问题。我希望 / public_html / xml / 目录优先,因此如果用户在请求 www.example.com/xml/1.xml 副本如果可能,将显示/public_html/xml/1.xml 而不是 /xml/1.xml

请记住,我想将两个目录中的所有文件MERGE访问到一个目录,我不想让任何一个目录中的文件无法访问,以便使其他目录中的文件可以访问。

必须使用位于 /.htaccess 下方的.htaccess文件来完成此操作。

1 个答案:

答案 0 :(得分:2)

/ public_html / xml /

中的.htaccess
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule  ^(.*)$  -  [L]

RewriteCond /PhysicalPath2AnotherFolder/%{REQUEST_URI}  -f [OR]
RewriteCond /PhysicalPath2AnotherFolder/%{REQUEST_URI}  -d
RewriteRule ^(.*)$  /WebPath2AnotherFolder/$1  [L]

ps:PhysicalPath2AnotherFolder应该包含但不包括原始目录的webpath。或者,当然,可以添加额外的RewriteCond,以便仅从REQUEST_URI中获取文件名。在那种情况下,它会像(我没有测试它:))..

RewriteCond %{REQUEST_URI} ^/.*?([^\/]+)$
RewriteCond /PhysicalPath2AnotherFolder/%1  -f [OR]
RewriteCond /PhysicalPath2AnotherFolder/%1  -d
RewriteRule ^(.*)$  /WebPath2AnotherFolder/$1  [L]