Назад | Перейти на главную страницу

Возврат страницы 404 при доступе к папке из одного домена, но разрешение доступа из других доменов и IP-адресов

Ситуация:

/www/hidden/.htaccess

RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Я знаю, что {SERVER_ADDR} дает IP-адрес сервера, но возвращает ли он тот, с которого клиент запрашивает?

Я также начинаю думать, что что-то в файле VirtualHosts было бы более подходящим. Есть мысли по этому поводу?

Что следует разрешить:

http://87.65.43.21/hidden/
https://87.65.43.21/hidden/
http://12.34.56.78/hidden/
https://12.34.56.78/hidden/
http://hidden.example.com/
https://hidden.example.com/
http://hidden.com/
https://hidden.com/
http://www.hidden.com/
https://www.hidden.com/

Что должно быть 404-е с 404.php

http://example.com/hidden/
https://example.com/hidden/
http://www.example.com/hidden/
https://www.example.com/hidden/
http://example.com/hidden/hiddenfile.php
https://example.com/hidden/hiddenfile.php
etc.

Спасибо.

Вы можете добиться этого, добавив магию mod_rewrite в ваш .htaccess.

RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule .* http://www.example.com/404.php [R=301]
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Это просто пример того, как вы можете это сделать. Конечно, вы можете изменить порядок правил и их назначение, просто помните, что добавление [L] остановит mod_rewrite от оценки любых дальнейших правил.

это должно работать, если example.com DocumentRoot не / www, а / www / something_else. Добавьте это в свой httpd.conf:

NameVirtualHost 87.65.43.21
NameVirtualHost 12.34.56.78
NameVirtualHost hidden.com
NameVirtualHost hidden.example.com

<VirtualHost 12.34.56.78 12.34.56.78 hidden.com hidden.example.com>
    DocumentRooot /www/hidden
    ServerName hidden.com
    ServerAlias hidden
</VirtualHost>