Ситуация:
/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>