2017-09-21 4 views
0

Ich versuche, die .htaccess-Datei zu konfigurieren, dass Sie Folgendes zu tun:mod_rewrite - .htaccess Hilfe benötigt

  1. Block Verzeichnisliste, wenn keine Indexdatei gibt es
  2. Rewrite alle Anfragen auf https
  3. gehen
  4. Streifen www und neue Route zu https://example.com
  5. entfernen .php extentions von Dateien:
    a) https://example.com/contact sollte intern Weg zu https://example.com/contact.php
    b) https://example.com/phpfile/1234 sollte intern Weg zu https://example.com/phpfile.php?id=1234
    c) Ich brauche auch einen Weg, um eine neue Route auf einigen Seiten mit 2 oder sogar 3 Variablen wie: https://example.com/otherphpfile.php?param1=101&param2=xxxx

Das ist, was ich habe, so weit:

Options -Indexes 
RewriteEngine On 

RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteCond %{HTTP_HOST} ^www.example.com [NC] 
RewriteRule (.*) https://example.com%{REQUEST_URI} [L,R=301,NC] 

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L] 

I abgedeckt 1,2,3,4a ... brauchen eine elegante Möglichkeit für 4b und 4c, die nicht an eine bestimmte Datei/Pfad gebunden ist. Es muss mit allen PHP-Dateien arbeiten, die 1 oder mehr Parameter akzeptieren.

Jede Hilfe wird sehr geschätzt.

Mit freundlichen Grüßen, Tony

+0

Sie können diesen Link überprüfen: http://www.generateit.net /mod-rewrite/index.php – Gyan

+0

4b. 'RewriteRule^(. *?)/(. *?) /? $ Https://example.com/$1.php?id=$2 [L, R = 301, NC]' Sollte es tun? –

+0

Besser, '/ otherphpfile/101/xxxx' oder'/otherphpfile/101/xxxx/yyyy' nur mit '/ otherphpfile.php' ohne irgendeinen GET-Parameter zu routen und den PHP-Code' REQUEST_URI' – anubhava

Antwort

0

Für 4b, die Verwendung als

RewriteRule ^phpfile/([^/]*)$ /phpfile.php?id=$1 [L] 

Example : 
Original URL : https://example.com/phpfile.php?id=123 
Rewrite URL : https://example.com/phpfile/123 

Für 4c, die Verwendung als

RewriteRule ^otherphpfile/([^/]*)/([^/]*)$ /otherphpfile.php?param1=$1&param2=$2 [L] 

Example : 
Original URL : https://example.com/otherphpfile.php?param1=1234&param2=abcd 
Rewrite URL : https://example.com/otherphpfile/1234/abcd 
+0

irgendeine Idee warum RewriteRule^parsen zu lassen phpfile/([^ /] *) $ /phpfile.php?id=$1 [L] funktioniert nicht ??? Ich bekomme ein "Die Seite leitet nicht richtig um" "Firefox hat festgestellt, dass der Server die Anfrage für diese Adresse auf eine Weise umleitet, die niemals abgeschlossen wird." – cnapsys

+0

https://example.com/phpfile.php?id=123 funktioniert
https://example.com/phpfile/123 nicht – cnapsys

+0

RewriteCond% {ENV: HTTPS}! Auf [NC] anstelle dessen: RewriteCond % {HTTPS} aus und prüfen Sie, ob das hilft. – Gyan