Vinnaren i pepparkakshustävlingen!
2017-12-21, 00:09
  #1
Medlem
SKetchers avatar
Hej,
har en hemsida online med konfigurationen att tvinga allting in i en index.php som sedan skickar vidare requesten till en controller som servar rätt sub-sida.
Ubuntu:14.04 och apache2. Backend är PHP


Har följande i en .htaccess vilket fungerar utan problem;
Citat:
Hemsida.se/.htaccess
AcceptPathInfo On
Options +MultiViews
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ /index.php?path=$1 [NC,L,QSA]


Men när jag sätter upp följande reglerer med 'let's encrypt' för att få till det gröna hänglåset;
Citat:
Hemsida.se.conf
<VirtualHost *:80>

ServerName hemsida.se
ServerAdmin webmaster@hemsida.se
ServerAlias hemsida.se
DocumentRoot /var/www/html/basic
ErrorLog /var/www/html/error.log
CustomLog /var/www/html/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =hemsida.se [OR]
##RewriteCond %{SERVER_NAME} =w [OR]
RewriteCond %{SERVER_NAME} =www.hemsida.se
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
..fungerar det inte utan istället för att gå till 'index.php?path=subsida', så försöker den nå 'subsida' direkt.

Hur skriver jag till reglerna så att det kombineras?
Citera
2017-12-21, 06:36
  #2
Medlem
distanss avatar
Citat:
Ursprungligen postat av SKetcher
Hej,
har en hemsida online med konfigurationen att tvinga allting in i en index.php som sedan skickar vidare requesten till en controller som servar rätt sub-sida.
Ubuntu:14.04 och apache2. Backend är PHP

Men när jag sätter upp följande reglerer med 'let's encrypt' för att få till det gröna hänglåset;

..fungerar det inte utan istället för att gå till 'index.php?path=subsida', så försöker den nå 'subsida' direkt.

Hur skriver jag till reglerna så att det kombineras?

Det är ju helt olika RewriteCond och RewriteRule i htaccess-filen och din vhost! Sen blir det nog lite extra kluddigt om vilka regler som har företräde om du även använder htaccess.
Citera
2017-12-21, 22:00
  #3
Medlem
SKetchers avatar
Citat:
Ursprungligen postat av distans
Det är ju helt olika RewriteCond och RewriteRule i htaccess-filen och din vhost! Sen blir det nog lite extra kluddigt om vilka regler som har företräde om du även använder htaccess.

Yes. Allt i .htaccess slutade fungera när jag lade in HTTPS-reglerna.

Är ute efter en regel som tvingas alla URLer till https och samtidigt in i en index.php med en adress-variabel.
Citera
2017-12-22, 23:39
  #4
Medlem
distanss avatar
Citat:
Ursprungligen postat av SKetcher
Yes. Allt i .htaccess slutade fungera när jag lade in HTTPS-reglerna.

Är ute efter en regel som tvingas alla URLer till https och samtidigt in i en index.php med en adress-variabel.

Tror du måste skapa reglerna i en egen <VirtualHost :443>? Typ:

Kod:
<VirtualHost *:80>
   ServerName www.example.com
   Redirect / https://secure.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName secure.example.com
   DocumentRoot /usr/local/apache2/htdocs
   SSLEngine On

# samma regler som i htaccess:
  RewriteEngine On 
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d 
  RewriteRule (.*)$ /index.php?path=$1 [NC,L,QSA]
</VirtualHost>

https://wiki.apache.org/httpd/RedirectSSL
Citera
2017-12-24, 12:10
  #5
Medlem
SKetchers avatar
Citat:
Ursprungligen postat av distans
-

Yes precis, tack. Löste det för några dagar sedan på samma sätt.
*:80conf ska bara ha en redirect till *:443 där allt händer. Gjorde också om .htaccess till en <directory>
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback