Почему перенаправление моего mod_rewrite .htaccess в другую папку приводит к ошибке 404? - PullRequest
1 голос
/ 06 августа 2011

Как я могу перенаправить файл в другой файл в другой папке, которая является физической папкой другого домена надстройки?

Вот что у меня есть на моем сервере (установлено cPanel):

  addon_domain_1.com ---> public_html/folder_1
  addon_domain_2.com ---> public_html/folder_2

Когда есть запрос на файл source.php в addon_domain_1.com, я бы хотел перенаправить его на target.php в folder_2 (не folder_1).Так это выглядит так:

http://www.addon_domain_1.com/blah/source.php ---> folder_2/target.php

В моем файле public_html / .htaccess у меня есть следующее:

  Options +FollowSymlinks All -Indexes
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^www\.addon_domain_1\.com$ [NC]
  RewriteRule /source\.php$ folder_2/target\.php [L]

Но это выдает ошибку 404:

  Not Found
  The requested URL /home/username/public_html/folder_2/target.php was not found on this server.

На самом деле файл target.php существует в folder_2 и доступен через браузер.

Странно то, что когда я копирую target.php в folder_1 и меняю свое правило, чтобы оно указывало на него, работает нормально!

  RewriteRule /source\.php$ folder_1/target\.php [L]

Итак, похоже, ошибка возникает только в том случае, если я перенаправлю ее в файл в папке, являющейся источником другого домена надстройки.

Как я могу обойти это ??

Обратите внимание, что я не могу использовать внешнее перенаправление, потому что оно потеряло бы исходные переменные среды, такие как REQUEST_URI и REMOTE_ADDR, которые нужны моему сценарию.

Другими словами, следующее правило не будет работать для меня:

  RewriteRule /source\.php$ http://www\.addon_domain_2.com/target\.php [P,L]

Я знаю, что вы также можете "прикрепить" переменные окружения в строке запроса, но я бы не сталиспользуйте этот метод, и пусть мой PHP-скрипт его обрабатывает.

Спасибо.

...