2013-04-27 1 views
0

У меня есть сервер Apache, хостинг нескольких сайтов для моей компании. Я планирую использовать htaccess и переписать URL-адреса из корневого каталога в подпапку.Как написать htaccess переписать для подкаталогов рекурсивно?

Вот моя реальная структура папок:

  • /WWW (корень)
  • /WWW/beamstyle (beamstyle.com.hk, CodeIgniter рамки)
  • /WWW/beamcard (beamcard.com .hk, статические файлы)
  • /WWW/beamcard/приложение (beamcard.com.hk/app, CodeIgniter рамки)

================= ==================================== ===============

beamstyle сайт работает, используя следующий код:

ReWriteCond %{HTTP_HOST} ^(www.)?beamstyle.com.hk [NC] 
RewriteCond %{REQUEST_URI} !^/beamstyle/.*$ 
RewriteRule ^(.*)$ /beamstyle/$1 [L] 

Вышеуказанные работы, потому что моя основа (CodeIgniter) находится внутри/WWW/beamstyle.

Поэтому я могу получить доступ к http://beamstyle.com.hk, и он будет перенаправлен без каких-либо проблем.

==================================================================================================================================== =======================

Однако, вот в чем проблема. Когда я делаю веб-сайт с билд-картой, он не работает, потому что на самом деле каталог «/ www/beamcard /» фактически хранит ТОЛЬКО статические .html-файлы. Моя структура CodeIgniter находится внутри приложения /.

Когда я использую тот же код:

ReWriteCond %{HTTP_HOST} ^(www.)?beamcard.com.hk [NC] 
RewriteCond %{REQUEST_URI} !^/beamcard/.*$ 
RewriteRule ^(.*)$ /beamcard/$1 [L] 

Вот результаты, используя приведенный выше код:

(а) http://beamcard.com.hk/ < - ОК не проблема, потому что это непосредственная папка после перезаписи (и содержат только статические файлы)

(b) http://beamcard.com.hk/app < - НЕ ОК, поскольку после перезаписи выполняется одна из директорий за пределами папки.

  • Если я печатаю это, адресная строка (вверху) получает не-замаскированный и перенаправляется http://beamcard.com.hk/beamcard/app/ (Я подтвердил, что это перенаправление не выполняется CodeIgniter файлов, так как тот же результат происходит, когда я применяю на пустой каталог)

======================================================================================================================================================================================== ====================================

Я пробовал все, что мог, и сделал так много поисков Google, но не смог обработать htaccess snippet, который работает в подкаталогах за пределами каталога после перезаписи. Он теряет функциональность «маскировки», когда я продвигаюсь дальше в подкаталогах.

Любая помощь на это очень ценится!

Приветствия, Томас

====================================== ==============================

Update 1

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

[Сценарии Case] ​​

** Для упрощения, давайте предположим, что каталог "приложение" пусто **

(1) Если я печатаю в http://beamcard.com.hk, страница «/ WWW/beamcard/index.html "внутри сервера должен быть загружен. После завершения загрузки страницы в строке местоположения должна быть написана «http://beamcard.com.hk/».

(2) Если я набираю http://beamcard.com.hk/contact_us.html, страница «/www/beamcard/contact_us.html» внутри сервера должна быть загружена. После завершения загрузки страницы в строке местоположения должна быть написана «http://beamcard.com.hk/contact_us.html».

(3) Если я набираю http://beamcard.com.hk/app, необходимо загрузить «пустой список файлов». После завершения загрузки страницы в строке местоположения должна быть написана «http://beamcard.com.hk/app/».

(4) Если я набираю http://beamcard.com.hk/app/, необходимо загрузить «пустую листинг файла». После завершения загрузки страницы в строке местоположения должна быть написана «http://beamcard.com.hk/app/».

================================================================================================================================== ==========================

В настоящее время (1) и (2) работает.

Однако для (3) и (4) после завершения загрузки страницы панель местоположения была перенаправлена ​​на «http://beamcard.com.hk/beamcard/app/», которая «показывает» часть «/ beamcard /», которая идеально должна быть скрыта от посетитель сайта.

+0

Кто-нибудь есть какие-нибудь идеи по этому поводу? Я застрял уже 2 дня. Надеюсь, кто-то может мне помочь здесь ... –

ответ

0

Попробуйте добавить NS в конце (чтобы предотвратить правило из применяется к суб-запросов):

ReWriteCond %{HTTP_HOST} ^(www.)?beamcard.com.hk [NC] 
RewriteCond %{REQUEST_URI} !^/beamcard/.*$ 
RewriteRule ^(.*)$ /beamcard/$1 [L,NS] 
+0

Хмм не повезло ... –