2017-03-26 1 views
0

Ich versuche eine Rewrite-Regel zu erstellen, die Kunden einzelne Produktseiten (PHP-Dateien) auf eine einzige Seite mit dem Produktnamen als Parameter übergeben. Das alte Format isthtaccess - Umleiten von Seiten ohne Erweiterungen mit der ursprünglichen URL als Parameter

http://example.com/product und das neue Format ist http://example.com/store.php?id=product.

kann ich die folgende Regel

RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+).php$ store.php?url=$1 [QSA,L] 

verwenden, um die Umleitung durchzuführen, aber es funktioniert nur, wenn die Kunden die Erweiterung .php in ihrem ursprünglichen Antrag enthalten. In ähnlicher Weise kann ich diese Regel verwenden:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

die Notwendigkeit für Benutzer zur Eingabe der Erweiterung zu beseitigen, aber ich habe nicht in der Lage gewesen, um erfolgreich die beide zu kombinieren. Ich habe versucht, die Änderung die erste Regel zu

RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+).$ store.php?url=$1 [QSA,L] 

Aber auch Umleitungen Bildern und Stylesheets, die Seite unbrauchbar machen.

Was ist der beste Weg, um meine .htaccess-Datei zu ändern, um beide dieser Ziele zu erfüllen (Keine erforderliche Erweiterung, Weiterleitungen auf einzelne Seite mit ursprünglichen Seitenname als Parameter)?

Vielen Dank im Voraus!

+0

alle einzelnen Produktseiten in einem anderen Verzeichnis befinden als der Haupt-Shop-Seite, wo der Kunde auf ein Produkt klickt auf, dass einzelne Produktseite zu gehen? – Kobbe

+0

@Kobbe Nein, alle Seiten befinden sich im Stammverzeichnis der Site. – appleii2

+0

Der Grund, warum ich frage, ist, dass ich einen anderen Ansatz wählen würde. Wenn sich alle Produktseiten im selben Verzeichnis befinden, können Sie einfach den Namen dieses Verzeichnisses ändern, z. indem Sie ein "x" vor dem Namen hinzufügen. Da der Server das Produkt nicht findet, löst es einen 404 aus. Mit einer benutzerdefinierten 404-Seite können Sie die Parameter mit $ _GET [] aus der URL fischen und von dort weiterleiten und alle anderen Anfragen umleiten, die keine bestimmten Zeichen haben in der URL zu einer anderen 404-Seite für fehlgeschlagene Anfragen, die nicht für eine Produktseite waren. Verstehst du, worauf ich hinaus will? – Kobbe

Antwort

Verwandte Themen