Ist es möglich, .htaccess zu verwenden sechsstellige Zahl URLs an ein Skript zu senden, aber alle anderen ungültigen URLs als 404s umgehen?
Frage
Ist es möglich, .htaccess zu verwenden, um alle sechsstelligen URLs zu verarbeiten, indem sie an ein Skript zu senden, aber jede andere ungültige URL als Fehler 404? Handelte
Zum Beispiel:
http://mywebsite.com/132483
würde zu richten an:
http://mywebsite.com/scriptname.php?no=132483
und
http://mywebsite.com/132483a or
http://mywebsite.com/asdf
würde als 404 Fehler behandelt werden.
ich derzeit habe diese Arbeit über einen benutzerdefinierten PHP 404 Skript, aber es ist eine Art kludgy. Mir scheint, dass .htaccess könnte eine elegantere Lösung sein, aber ich habe nicht in der Lage gewesen, wenn es überhaupt möglich ist, um herauszufinden.
Lösung
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([0-9]{6})$ scriptname.php?no=$1 [L]
</IfModule>
die saubere URL zu bewahren
http://mywebsite.com/132483
während scriptname.php Verwendung dient nur [L]. Mit [R = 301] werden Sie zu Ihrem scriptname.php umleiten? No = xxx
Sie können dieses nützliche http: //www.addedbytes .com / download / mod_rewrite-Spickzettel-v2 / pdf /
Andere Tipps
In Ihrer .htaccess-Datei, setzen Sie das folgende
RewriteEngine On
RewriteRule ^([0-9]{6})$ /scriptname.php?no=$1 [L]
Die erste Zeile schaltet den Motor mod_rewrite auf. Die () Klammern den Inhalt in $ 1 - aufeinanderfolgende () würde $ 2, $ 3 ... bevölkern und so weiter. Die [0-9] {6} sagt für eine Zeichenfolge aussehen lange genau 6 Zeichen, die nur Zeichen 0-9.
Die [L] am Ende macht die letzte Regel dieses - wenn es gilt, die Regelverarbeitung stoppen
.Oh, das ^ und $ markiert den Beginn und das Ende des eingehenden uri.
Ich hoffe, das hilft!
Ja, es ist möglich, mit mod_rewrite. Es gibt Unmengen von gut mod_rewrite Tutorials online eine schnelle Google-Suche in kürzester Zeit Ihre Antwort auftauchen sollte.
Im Grunde, was Sie tun werden wollen, wird dafür sorgen, dass der reguläre Ausdruck, den Sie nur für Ziffern verwenden sucht und keine anderen Zeichen und die Länge, um sicherzustellen, 6. Dann werden umleiten Sie scriptname.?no= mit die Zahl, die Sie gefangen.
Hope, das hilft!