Ist es möglich, .htaccess zu verwenden sechsstellige Zahl URLs an ein Skript zu senden, aber alle anderen ungültigen URLs als 404s umgehen?

StackOverflow https://stackoverflow.com/questions/73123

  •  09-06-2019
  •  | 
  •  

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.

War es hilfreich?

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!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top