Как я могу загрузить контент из двух разных папок (в зависимости от субдомена) и сохранить старые URL? - PullRequest
0 голосов
/ 01 января 2019

Мой веб-сайт example.com.

В моей папке public_html у меня есть две папки.Один называется main, а другой - report.

Когда кто-то переходит на example.com, я хочу обслуживать контент из папки main, но я хочу, чтобы его URL оставалсято же самое.

Итак, если они перейдут на example.com/file.html, я хочу, чтобы они увидели файл file.html, который находится в папке main, но я не хочу получить их URLизменить на example.com/main/file.html.

Аналогичным образом, если они перейдут на report.example.com/report1.pdf, я хочу, чтобы они увидели файл report1.pdf, который находится в папке report, но я не хотят, чтобы их URL-адрес изменился на report.example.com/report/report1.pdf.

Самое близкое, чего я смог достичь, это:

DirectoryIndex index.php index.html index.htm
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^((?!main).*)$ /main/$1

RewriteCond %{HTTP_HOST} ^report.example.com$ [NC]
RewriteRule ^((?!report).*)$ /report/$1 [L]

Это работает в некоторой степени, но:

  • Если кто-то переходит на http://example.com/report/index.html, сервер неправильно загружает файл index.html из папки public_html/report, а не из папки public_html/main/report.Обычно этот путь имеет смысл, но в этом случае я пытаюсь изменить это поведение.

  • Если кто-то перейдет на http://report.example.com/test, сервер правильно отобразит файл public_html/test/index.html,но перенаправляет их на http://report.example.com/report/test/.

Как загрузить правильные файлы и сохранить правильные URL-адреса?

1 Ответ

0 голосов
/ 02 января 2019

Это должно сделать:

RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^ /main%{REQUEST_URI} [L]

RewriteCond %{HTTP_HOST} ^reports.example.com$ [NC]
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^ /reports%{REQUEST_URI} [L]
...