апачская виртуальная конфигурация хоста

привет я пытаюсь удостовериться, что к моему веб-сайту только получают доступ через 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 скорее ограничено, и я задаюсь вопросом - ли это лучший способ достигнуть этого?

слова благодарности

-2
задан 5 October 2015 в 03:46
2 ответа

%{SERVER_ADDR} также может помочь переписать IP:

редактирование:

Извините, нельзя использовать переменные в правой части выражения.

Попробуйте что-нибудь вроде этого:

RewriteCond %{SERVER_NAME},%{SERVER_ADDR} ^(.*),\1

Или если нет, то динамическим способом

RewriteCond %{SERVER_NAME} !192.168.1.1
-1
ответ дан 5 December 2019 в 21:48
  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 запросов

  1. Затем удалите эту строку из конфигурации 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

0
ответ дан 5 December 2019 в 21:48

Теги

Похожие вопросы