Запретить запросы к определенному домену на виртуальном хостинге? - PullRequest
0 голосов
/ 09 декабря 2018

Некоторые из моих сайтов размещены на общем сервере.Структура папок и назначение домена моего веб-пространства выглядит следующим образом:

directory    assigned domain
-------------------------------------
/            x8967397.my-provider.com     (default domain)
/dir_1/      www.my-first-domain.com   =  x8967397.my-provider.com/dir_1/
/dir_2/      www.my-second-domain.com  =  x8967397.my-provider.com/dir_2/

Домен x8967397.my-provider.com является доменом по умолчанию, который входит в мой план хостинга.Он всегда указывает на корневой каталог моего веб-пространства и не может быть отключен или установлен в другую папку.В результате можно получить доступ к веб-сайту с URL-адресом www.my-first-domain.com, запросив x8967397.my-provider.com/dir_1/.То есть оба URL показывают один и тот же веб-сайт посетителю.

Я бы хотел заблокировать доступ к домену по умолчанию (x8967397.my-provider.com), включая все файлы и директоры (например, x8967397.my-provider.com/file.html и x8967397.my-provider.com/dir_1/), не блокируя другие домены (например, www.my-first-domain.com), но не знаю как.Если я заблокирую доступ к корневой папке в htaccess, используя Deny from all, все домены станут недоступными.

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

В основном что-то вроде этого:

<URL "x8967397.my-provider.com">
Deny from all
</URL>

Редактировать

В папках есть файлы .htaccess /dir_1/ и dir_2, которые являются корневыми папками для пользовательских доменов www.my-first-domain.com и www.my-second-domain.com.Вот правила перезаписи из файла .htaccess одного из них:

RewriteEngine On
RewriteBase /

RewriteRule ^images/background\.png$ includes/adaptive-images.php

# redirects non-www to www
RewriteCond %{HTTP_HOST} ^my-first.domain\.com [NC]
RewriteRule (.*) http://www.my-first-domain.com/$1 [R=301,L]

# redirects /index.php to /
RewriteCond %{IS_SUBREQ} false
RewriteRule ^index\.php$ http://www.my-first-domain.com/ [R=301,L]

# redirects missing files and directories to home (instead of error document)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.my-first-domain.com/ [R=301,L]

1 Ответ

0 голосов
/ 09 декабря 2018

Вы можете использовать что-то вроде следующего:

RewriteEngine on


RewriteCond %{HTTP_HOST} ^x8967397\.my-provider\.com$ [NC]
#exclude root dirs
RewriteCond ℅{REQUEST_URI} !^/[^/]+/?$
#exclude homepage
RewriteCond ℅{REQUEST_URI} !^/$
#forbid all other requests
RewriteRule ^.*$ - [F,L]

Это вернет 403 запрещенную ошибку, если вы посетите корневые каталоги / и корневого уровня /foo/ и файлы вашего домена, например: http://x8967397.my-provider.com/foo/ вернет ошибку HTTP 403.

...