Как запретить доступ к подпапкам домена при размещении двух доменов с использованием одного и того же веб-пространства? - PullRequest
0 голосов
/ 28 апреля 2010

У меня есть два домена, которые указывают на одну и ту же корневую папку моего веб-пространства. Мой корневой каталог настроен так:

  • / domain1
  • / domain2
  • / общий

Где просит ...

Текущий .htaccess:

# Redirect domain1.com paths to domain1 folder.
RewriteCond %{HTTP_HOST} ^www\.domain1\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/domain1/
RewriteRule ^(.*)$ /domain1/$1

# Redirect controllers to index.php.
RewriteCond %{HTTP_HOST} ^www\.domain1\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^domain1/(.*)$ /domain1/index.php?controller=$1 [QSA,L]

# Redirect domain2.com paths to domain2 folder.
RewriteCond %{HTTP_HOST} ^www\.domain2\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/domain2/
RewriteRule ^(.*)$ /domain2/$1

# Redirect controllers to index.php.
RewriteCond %{HTTP_HOST} ^www\.domain2\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^domain2/(.*)$ /domain2/index.php?controller=$1 [QSA,L]

Осталось сделать:

  1. Не показывать страницы с http://www.domain1.com/domain1, если пользователь введите это вручную.
  2. Не обслуживать страницы с http://www.domain1.com/domain2, если пользователь вводит это вручную (я уже реализовал это, но для краткости опускаю).

Примечание: я бы предпочел не использовать символические ссылки, так как я запускаю xampp в windows для локальной разработки.

Мой вопрос:

Как я могу внутренне перенаправить с http://www.domain1.com на http://www.domain1.com/domain1, но не обслуживать http://www.domain1.com/domain1, если он введен пользователем?

1 Ответ

1 голос
/ 29 апреля 2010

Вам нужно проверить строку запроса , чтобы увидеть, какой URI был первоначально запрошен:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /(domain1|domain2)[/?\ ]
RewriteRule ^(domain1|domain2)($|/) -

В этом случае вы можете отправить код состояния 404 (флаг [R=404], начиная с Apache 2) или переписать запрос до некоторой точки, где такие запросы обрабатываются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...