Entfernen Sie die Zeichen aus URL mit htaccess
Hoffentlich kann jemand erkennen was ich falsch mache, aber hier ist die Geschichte...
Meine aktuelle Website-URL ' s werden automatisch erzeugt durch die E-Commerce-software von der Produkt-und Kategorie-Namen, also wenn der Produkt - /Kategorie-name enthält ein nicht-alphanumerisches characer, das ist codiert in der URL ist ein Schmerz. EG:
mysite.com/Shop/Furniture-Set-Large-Table%2C-4-Chairs.html
Ich bin Umzug in eine neue E-Commerce-Lösung, die auch generiert automatisch die URL ' s aus dem Produkt-Namen, aber er ist klug genug, um zu entfernen Sie alle nicht-alphanumerischen Zeichen. Es wandelt auch in Kleinbuchstaben, die ich habe es geschafft, eine htaccess-Lösung für die Umleitung von groß-zu Kleinbuchstaben. Es hat auch nicht den "Werkstatt" - Teil der URL, das habe ich auch geschafft, zur Lösung via htaccess. EG:
mysite.com/furniture-set-large-table-4-chairs.html
Entfernen der "Werkstatt" - Teil:
RedirectMatch 301 ^/Shop/(.*)$ http://www.mysite.com/$1
Ersetzen Großbuchstaben mit Kleinbuchstaben zu verhindern, dass ein 404-Fehler:
RewriteCond %{REQUEST_URI} [A-Z]
RewriteCond %{REQUEST_FILENAME} !\.(?:png|gif|ico|swf|jpg|jpeg|js|css|php|pdf)$
RewriteRule (.*) ${lc:http://www.mysite.com/$1} [R=301,L]
Diese funktionieren perfekt.
Also brauche ich eine htaccess-Regel, oder ggf. mehrere, um diese zu entfernen codierten Zeichen aus der URL. Ich brauche nicht, Sie zu ersetzen, entfernen Sie einfach, weil die software erstellt die URL als "Tabelle" %2C-4-Stühlen" - so wird nur das %2C muss entfernt werden.
Ich entfernen müssen bestimmte Zeichenkodierungen aus der URL, wie z.B.:
Komma (%2C), Apostroph (%27), Doppelpunkt (%3A), etc.
Kann mir jemand raten, eine passende htaccess-Regel oder die Regeln für diese?
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
URI ist url-dekodiert, bevor es geschickt durch die rewrite-engine, so dass Sie wollen, dass der tatsächliche Zeichen und nicht Ihre codierten Pendants:
Den redirect-status können mod-rewrite wissen, dass, wenn einer der oben genannten Regeln angewendet habe (so dass die interne redirect-status-Wert = 200), dann müssen wir umleiten, aber wir werden nicht erreichen, dass ein Teil der Regeln, bis es leer ist alle Sonderzeichen überprüft.
Würden Sie wollen, diese Regeln alle vor eine der Umleitungen, so dass die Regeln kann Schleife und entfernen Sie mehrere Instanzen von solchen Zeichen enthalten. Dann, sobald es gibt keine besonderen Zeichen, die rewrite-engine kann trickle-down auf, wo Ihre Umleitungen.
Ich würde vorschlagen, entfernen Sie die mod_alias
RedirectMatch
Richtlinie und ersetzen Sie es mit einer rewrite-Regel. Manchmal kombinieren die 2 Module und haben beide von Ihnen beeinflussen eine einzelne URI kann zu unerwarteten Ergebnissen führen. so vor alle der oben genannten Regeln, würde man haben:hinzufügen, das entfernen von
/Shop/
in der Kette von Sonderzeichen. Dann Letzte Regel Folgen würde: