2014-12-26 1 views
0

Я пытался ограничить доступ к определенному субдомену через порт сервера, например. его можно получить только из subdomain.domain.com:8443 и других портов.Ограничить доступ к подкаталогу с помощью определенного SERVER_PORT с помощью htaccess

В настоящее время я использую hostgator для своего веб-хостинга, и он уже настроен таким образом, что subdomain.domain.com указывает на правильный подкаталог.

Теперь в файле Htaccess, я сейчас пытаюсь это:

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase /subdomain 
RewriteCond %{SERVER_PORT} !^8443$ 
RewriteRule ^- [F] 
RewriteCond %{SERVER_PORT} ^8443$ 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/subdomain/$1 [R=301,L] 

Что касается блокировки других портов идет, кажется, работает, так как доступ к любому subdomain.domain.com или www.domain .com/subdomain, я получаю запрещенную страницу 403. Но я не могу заставить его правильно загрузить нормальный контент, когда я получаю доступ к нему через subdomain.domain.com:8443 или www.domain.com:8443/subdomain. Правильно ли выполняю условия и правила перезаписи?

Спасибо!

ответ

0

R=301 сообщает серверу, что он выполняет перенаправление, а не (беззвучный) переписывать. Таким образом, когда вы загружаете через 8443, пользователь перенаправляется на http://%{HTTP_HOST}/subdomain/$1 без спецификации порта 8443, и затем они блокируются первым правилом. Если вы делаете curl -I на subdomain.domain.com:8443 вы должны увидеть код 301 редирект, а не 200.

Снимите R = 301 и удалить полную спецификацию домена в конечном RewriteRule, чтобы оставить:

RewriteRule ^(.*)$ subdomain/$1 [L]

Это должно сделать молчаливое переписывание содержимого.

Смежные вопросы