2017-01-12 3 views
2

Ich versuche, eine .htaccess zu erstellen, das macht folgendes:.htaccess eine bestimmte Route mit Umleitung sowohl https und http

Wenn ich https :// www.test.com/register/abc besuchen es lädt die Datei https :// www.test.com/register/index.php?path=abc (aber noch immer die URL https :// www.test.com/register/abc im Browser)

Bisher ist dies mein .htaccess

Options +FollowSymLinks -MultiViews -Indexes 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?path=$1 [NC,L,QSA] 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

Es funktioniert gut, wenn ich die uRL bereits auf https besuchen.
Der Browser zeigt www.test.com/register/abc.

Allerdings, wenn ich die URL auf http besuchen, zeigt die URL im Browser, da dies www.test.com/register/index.php?path=abc

Technisch funktioniert es immer noch, aber die URL ist wirklich hässlich. Gibt es trotzdem etwas zu beheben?

Antwort

0

Dies sollte tun, was Sie suchen:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^register/([a-zA-Z0-9-_]+) /index.php?path=$1 [QSA,NC,L] 

Es wird intern neu zu schreiben:

www.example.com/register/acb zu www.example.com/index.php?path=abc

Update: Um Sie etwas zu verwenden, wie couls https zu erzwingen:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteRule ^register/([a-zA-Z0-9-_]+) /index.php?path=$1 [QSA,NC,L] 
+0

Danke für die große Antwort. Nur eine kurze Frage, was ist, wenn ich auch alle HTTP auf https umleiten möchte? Die obige Antwort funktioniert gut, aber ändert nicht http zu https (ich möchte keine http-URLs) – Kenneal

+0

Ihre Begrüßung. Ich habe meine Antwort aktualisiert. Bitte als akzeptiert markieren, wenn das Problem behoben wurde. – atoms

+0

wird tun, vielen Dank Atome! – Kenneal

Verwandte Themen