привет я пытаюсь удостовериться, что к моему веб-сайту только получают доступ через https, и только через www sub домен, я в настоящее время использую следующую апачскую виртуальную конфигурацию хоста:
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=permanent,L]
#..
</VirtualHost>
<VirtualHost *:443>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
RewriteCond %{SERVER_NAME} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,NC,L]
<Directory /home/{apacheuser}/www>
SSLRequireSSL
Order allow,deny
Allow from all
LimitRequestBody 512000
</Directory>
#..
</VirtualHost>
Я боюсь, что мое знание regex's скорее ограничено, и я задаюсь вопросом - ли это лучший способ достигнуть этого?
слова благодарности
%{SERVER_ADDR}
также может помочь переписать IP:
редактирование:
Извините, нельзя использовать переменные в правой части выражения.
Попробуйте что-нибудь вроде этого:
RewriteCond %{SERVER_NAME},%{SERVER_ADDR} ^(.*),\1
Или если нет, то динамическим способом
RewriteCond %{SERVER_NAME} !192.168.1.1
Просто замените
# Перенаправьте HTTP-запросы на https
RewriteEngine On
RewriteCond% {HTTPS}! = On
RewriteRule. * Https: //www.example.com% {REQUEST_URI} [R, L]
RewriteCond% {HTTP_HOST}! = Www.example.com
RewriteRule. * Https: //www.example.com% {REQUEST_URI} [R = постоянный, L]
Автор
# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
Таким образом, весь трафик http будет перенаправлен на https, кроме http://example.com запросов
Затем удалите эту строку из конфигурации https:
# Перенаправить http запросы на https
RewriteEngine On
RewriteCond% {HTTPS}! = On
RewriteRule. * Https: //www.example.com% {REQUEST_URI} [R, L]
RewriteCond% {HTTP_HOST}! = Www.example.com
RewriteRule. * Https: //www.example.com% {REQUEST_URI} [R = 301, L]
, так что оставьте
RewriteCond %{SERVER_NAME} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,NC,L]
, который перенаправляет https://example.com на https://www.example.com