Как объединить несколько RewriteCond в одном домене, используя Apache в Ubuntu? - PullRequest
0 голосов
/ 29 мая 2018

Я борюсь с настройками htaccess и apache моего домена.Я использую SSL, поэтому у меня есть два виртуальных хоста <VirtualHost *:80> и <VirtualHost *:443>. Я пытаюсь объединить эти два условия в одно:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(.*)\.example\.com
RewriteRule ^(.*)$ http://example.com/%1/$1 [L,NC,QSA]

, которое предполагает перенаправление любых адресов, таких как test.domain.com, на domain.com/test если существует, но также использовать HTTPS следующим образом:

RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Мой вопрос: как объединить эти два в один файл и где их использовать?В <VirtualHost *:80>?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Вам нужно создать файл abc.conf в /etc/apache2/sites-available/abc.conf и записать это в этот файл

<VirtualHost *:80>
    ServerName abc.com
    ServerAlias www.abc.com
    DocumentRoot /var/www/abc.com
    <Directory /var/www/abc.com>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
        ErrorLog /var/log/apache2/abc.com.error.log
        CustomLog /var/log/apache2/abc.com.log combined
        RewriteEngine on
RewriteCond %{SERVER_NAME} =abc.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
    ServerName abc.com
    ServerAlias www.abc.com
    DocumentRoot /var/www/abc.com
    <Directory /var/www/abc.com>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>
    ErrorLog /var/log/apache2/abc.com.error.log
    CustomLog /var/log/apache2/access.log combined
    SSLCertificateFile /etc/letsencrypt/live/abc.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/abc.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

, после этого вам нужно включить ваш файл .confпо типу

sudo a2ensite abc.conf и перезапустите Apache, а также a2dismod 000-default.conf и перезапустите снова.

0 голосов
/ 29 мая 2018

Вам нужно решить 2 вещи -

  1. Перенаправить все на https
  2. , передав поддомен как uri.

Для пункта 1 в вашем *: 80 виртуальных хостов добавьте ниже -

Redirect permanent / https://mysite.example.com/

Для пункта 2 в вашем виртуальном хосте *: 443 добавьте ниже для конверсии URL

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com
RewriteRule ^(.*)$ https://example.com/%1/$1 [L,NC,QSA]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...