2016-08-03 24 views
2

Ich habe ein Problem mit der .htaccess-Konfiguration. Mein Webserver ist Apache2 und meine Website wurde von PHP codiert. Aber ich habe Probleme mit .htaccess..htaccess funktioniert nicht beim Zugriff über SSL/HTTPS in Apache2

Während ich über non-ssl zugreifen (http://mywebsite.dev), meine .htaccess war Arbeit. Ich benutze. Htaccess für URL Rewrite und Fehlerbehandlung durch benutzerdefinierte Vorlage. Aber, wenn ich darauf über SSL (https://mywebsite.dev), für Index-Seite war Arbeit. Aber wenn ich auf https://mywebsite.dev/page/about zugreife, wird das Display 404 nicht gefunden (es wird die 404 nicht gefundene Seite angezeigt, nicht meine benutzerdefinierte Seite. Es ist gemein, mein .htaccess-Code wird nicht geladen).

Für meine URL-Struktur war es http://mywebsite.dev/?load=page&page=about. Wenn ich auf http://mywebsite.dev/page/about zugreife, funktioniert es. Aber nicht über SSL. Was ist das Problem? Btw, mein /etc/apache2/sites-available/website.conf Code ist:

<VirtualHost *:80>                   
     ServerName mydomain.com                
     ServerAdmin [email protected]              
     DocumentRoot /var/www/html/website/             

     <Directory /var/www/html/website>             
      Options Indexes FollowSymLinks              
      AllowOverride All                 
      Require all granted                
     </Directory>                   

     # LogLevel info ssl:warn                

     ErrorLog ${APACHE_LOG_DIR}/error.log             
     CustomLog ${APACHE_LOG_DIR}/access.log combined          
     ErrorLog ${APACHE_LOG_DIR}/error.log             
     CustomLog ${APACHE_LOG_DIR}/access.log combined 

     # enabled or disabled at a global level, it is possible to       
     # For most configuration files from conf-available/, which are      
     # enabled or disabled at a global level, it is possible to       
     # include a line for only one particular virtual host. For example the    
     # following line enables the CGI configuration for this host only     
     # after it has been globally disabled with "a2disconf".        
     #Include conf-available/serve-cgi-bin.conf 

</VirtualHost>                    

Und meine .htaccess-Code ist:

RewriteEngine On                  
RewriteRule ^page/([A-Za-z0-9-]+)/?$ index.php?load=page&page=$1 [NC]     
ErrorDocument 404 /public/404.html             

ich es mit in Windows bin Entwicklung Laragon mit . Und für Production env ist: Ubuntu 16, PHP 7 und Apache2. Vielen Dank.

Sorry für Grammatikfehler, oder Sie verstehen nicht, was ich meine. Vielen Dank war meine Frage zu lesen :)

Antwort

3

Die Linie <VirtualHost *:80> Fordert Apache, dass diese Konfiguration gilt nur für den Verkehr auf allen Schnittstellen kommen (*), sondern nur auf dem Port 80 (:80). Die AllowOverride All wird nicht auf https (Port 443) angewendet, da es nicht übereinstimmt.

Um dies zu beheben, benötigen Sie einen anderen virtuellen Host, <VirtualHost *:443>. Sie können den Inhalt auf den zwei virtuellen Hosts duplizieren oder ein Include verwenden, siehe server fault answer.

+0

Sie meinen, ich muss neue virtuelle Hosts mit anderen Port, um die Anfrage über HTTPS zu behandeln, bin ich falsch? CMIIW. Danke für die Antwort. – filosofikode

+0

Richtig, Sie benötigen zwei virtuelle Hosts, um HTTP und HTTPS zu verarbeiten (die Serverfehlerfrage ist genau das). Wenn Sie mit https auf Ihren Server zugreifen können, haben Sie bereits eine 'SSLEngine on' (und andere' SSLCertificateFile'), die Sie eventuell anpassen/wiederverwenden müssen. –