2016-10-07 1 views
0

Ich verwende zwei Top-Level-Domänen .pl und .net. Beide sollten immer auf https Version umleiten, aber wenn Benutzer zu http://example.net/ gehen, leitet Apache zu https://example.pl/ um. Warum ist es vorzuziehen, auch wenn es auf der dritten Position in ServerAlias ist? Apache Redirect zu .net nur wenn ich .pl von ServerAlias entferne.
Mein /etc/apache2/sites-enabled/example.pl.conf sieht wie folgt aus:Warum leitet Apache zu einem von ServerAlias ​​um?

<VirtualHost *:80> 
    ServerName example 
    DocumentRoot /var/www/example.pl 
    ServerAlias example.net www.example.net example.pl www.example.pl 
</VirtualHost> 

<IfModule mod_ssl.c> 
    <VirtualHost *:443> 
     ServerAdmin [email protected] 

     DocumentRoot /var/www/example.pl 

     <Directory "/var/www/example.pl"> 
       Options FollowSymLinks 
       AllowOverride All 
       Require all granted 
     </Directory> 

     ServerName example 

     LogLevel trace8 rewrite:trace8 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 

     SSLEngine on 
     SSLCertificateFile /etc/ssl/certs/2_example.pl.crt 
     SSLCertificateKeyFile /etc/ssl/private/example.key 
     SSLCertificateChainFile /etc/ssl/certs/1_root_bundle.crt 

     <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
       SSLOptions +StdEnvVars 
     </FilesMatch> 
     <Directory /usr/lib/cgi-bin> 
       SSLOptions +StdEnvVars 
     </Directory> 

     BrowserMatch "MSIE [2-6]" \ 
       nokeepalive ssl-unclean-shutdown \ 
       downgrade-1.0 force-response-1.0 
     BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown 

    </VirtualHost> 
</IfModule> 

Und mein .htaccess:

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    RewriteCond %{HTTP_HOST} ^www\.(.*) 
    RewriteRule ^.*$ https://%1/$1 [R=301,L] 

    # Redirect Trailing Slashes If Not A Folder... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 
+0

Sieht aus wie das Umschreiben von Backend kommt, überprüfen Laravel Einstellungen –

+0

Ich protokolliere jeden neu schreiben und zuerst neu schreiben bereits siehe example.pl. –

+0

Nun, dann kommt das erste Rewrite von Laravel, weil es weder aus .conf noch aus htaccess kommt. –

Antwort

1

Warum es so kompliziert mit .htaccess machen, wenn Sie Zugang zum Haupt conf haben?

die virtulahosts definieren sollte genug sein, wie:

#NameVirtualHost *:80 <-- uncomment only with 2.2 
<VirtualHost *:80> 
ServerName example.net 
Redirect/https://example.net/ 
</VirtualHost> 

<VirtualHost *:80> 
ServerName example.pl 
Redirect/https://example.pl/ 
</VirtualHost> 

Oder wenn Sie faul sind und wollen einfach nur ein Virtualhost definieren:

<VirtualHost *:80> 
ServerName bogus.example 
RewriteEngine on 
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R,L] 
</VirtualHost> 
+0

.htaccess kommt von PHP Laravel Framework, also entschied ich mich, es nicht zu berühren. –

+0

Ich empfehle Ihnen, das Umschreiben zu https Teil in Ihrem .htaccess strippen und versuchen Sie meine Vorschläge, wird Ihr Leben viel einfacher machen imo. –

+0

Erste Version (ohne .htaccess zu berühren) funktioniert gut. Die Lazy-Version leitet jedoch immer noch an die falsche Domäne weiter. –

Verwandte Themen