如何在Ubuntu中使用Apache在一个域中组合多个RewriteCond?

时间:2018-05-28 21:20:07

标签: apache .htaccess ubuntu mod-rewrite dns

我正在努力使用我的域名的htaccess和apache设置。我正在使用SSL,因此我有两个虚拟主机0.0.0.0/0<VirtualHost *:80>我正在尝试将这两个条件合并为一个:

<VirtualHost *:443>

如果存在,则会将RewriteEngine on RewriteCond %{HTTP_HOST} ^(.*)\.example\.com RewriteRule ^(.*)$ http://example.com/%1/$1 [L,NC,QSA] 等地址重定向到test.domain.com,但也会像这样使用HTTPS:

domain.com/test

我的问题是:如何将这两者合并为一个文件以及在何处使用它们?在RewriteCond %{SERVER_NAME} =www.example.com [OR] RewriteCond %{SERVER_NAME} =example.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

2 个答案:

答案 0 :(得分:0)

你有两件事需要解决 -

  1. 将所有内容重定向到https
  2. 将子域名作为uri传递。
  3. 对于第1点,在你的*:80虚拟主机中添加以下 -

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

    对于第2点,在您的*:443虚拟主机中添加下面的网址转换

    {{1}}

答案 1 :(得分:0)

您需要在。下创建一个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然后重新开始。