2012-01-29 99 views
0

我需要从浏览器中同一目录中的两个目录访问文件。Apache Rewrite:显示来自同一目录中两个目录的文件

视觉上的目录可能看起来像这样...

/public_html/www.example.com/xml/

/XML/

/public_html/.htaccess

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

/public_html/www.example1.com/

/public_html/www.example2.com/

的XML文件要求在http://www.example.com/ 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

+1的问题。这是一个非常有效的场景,所以我想知道为什么你得到了downvote。 – davidethell 2012-02-27 01:31:07

回答

1

喜欢的东西的/的public_html/XML/

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] 

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

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

将看看它,并尝试一下,让你知道结果是什么;感谢张贴! – John 2012-01-29 09:00:09

+0

@John对不起,我不会在凌晨4点尝试任何东西)我要睡觉,但如果8个小时内没有人纠正我,我会自己尝试:)顺便说一句,你应该明白它会不给这两个文件夹的索引。 PHP脚本可能会同时产生一个列表。 – Cheery 2012-01-29 09:03:06

+0

我没有要求你尝试任何事情,我只是承认你的帖子,并且在我完成了一些RL的工作后,我会尝试一下我现在要做的事情。 – John 2012-01-29 09:42:22