我需要从浏览器中同一目录中的两个目录访问文件。
视觉上目录可能如下所示:
/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文件来完成此操作。
答案 0 :(得分:2)
/ public_html / xml /
中的.htaccessRewriteEngine 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]