.htaccess: заблокировать физический URL-адрес каталога, но косвенно разрешить URL-адрес через поддомен - PullRequest
0 голосов
/ 24 июля 2010

Поэтому по соображениям безопасности я хочу запретить http://www.domain.com/directory/, но разрешить этот физический каталог только через http://subdomain.domain.com/directory/

Простым способом было бы просто переместить каталог, но я не могу этого сделать, потому что он ломает приложение, так как бы я сделал это с .htaccess?

Я временно заблокировал его, используя:

RedirectMatch 301 ^/directory/$ http://www.domain.com/

Но, конечно, это перенаправляет подкаталог в любом случае, так что я думаю, я мог бы просто написать:

RedirectMatch 301 ^http://www.domain.com/directory/$ http://www.domain.com/

или что-то подобное, но это не работает ... предложения?

1 Ответ

0 голосов
/ 24 июля 2010

Вы можете сделать это с помощью RewriteCond:

RewriteEngine on
RewriteCond %{HTTP_HOST} !subdomain.domain.com
RewriteRule ^directory http://www.domain.com [R=301]

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

<VirtualHost *:80>
    # this is the existing virtual host for the www subdomain
    ServerName www.domain.com
    ...
    DocumentRoot /path/to/docroot
    # Add this next section
    <Directory /path/to/docroot/directory>
        Options allow,deny
        Deny from all
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    # this is the existing vhost for the other subdomain
    ServerName subdomain.domain.com
    ...
    DocumentRoot /path/to/docroot
</VirtualHost>

Более эффективно, когда Apache не нужно разбирать файлы .htaccess.

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