Apache Rewrite: показать файлы из двух каталогов в одном каталоге - PullRequest
0 голосов
/ 29 января 2012

Мне нужно получить доступ к файлам из двух каталогов в одном каталоге в браузере.

Визуально каталоги могут выглядеть так:

/ 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. Я хочу также иметь возможность доступа к файлам в каталоге / xml / из example.com / xml / .

Существует также проблема файлов с точным именем, присутствующих в обоих каталогах. Я бы предпочел, чтобы каталог / public_html / xml / имел приоритет, поэтому если пользователь запрашивает www.example.com / xml / 1.xml копию в / public_html /xml/1.xml отображается вместо / xml / 1.xml , если это возможно.

Помните, я хочу MERGE доступ ко всем файлам в обоих каталогах в один каталог, я не хочу делать файлы из любого каталога недоступными, чтобы сделать файлы в другом каталоге доступными.

Это должно быть сделано с помощью файла .htaccess, расположенного в /. Htaccess ниже.

1 Ответ

2 голосов
/ 29 января 2012

Примерно так .htaccess в / 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]

ps: PhysicalPath2AnotherFolder должен иметь, но не включать, веб-путь исходного каталога в нем.Или, конечно, можно добавить дополнительный RewriteCond, чтобы взять только имя файла из REQUEST_URI.В таком случае это будет что-то вроде (я не проверял это :)) ..

RewriteCond %{REQUEST_URI} ^/.*?([^\/]+)$
RewriteCond /PhysicalPath2AnotherFolder/%1  -f [OR]
RewriteCond /PhysicalPath2AnotherFolder/%1  -d
RewriteRule ^(.*)$  /WebPath2AnotherFolder/$1  [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...