RewriteRule ^([A-Za-z0-9]+)$ viewProfile.php?Name=$1 [L]
Ihr RewriteRule
Muster nicht enthalten einen Raum, so es wird niemals ein Leerzeichen in der angeforderten URL, z. wwww.example.com/San%20Francisco
(ist ein URL-codiertes Leerzeichen).
anzumerken, dass, obwohl der Raum URL codierte (% -encoded) in der Anforderung (um gültige Anforderung zu machen), die RewriteRule
Muster Spiele gegen das% -decoded URL-Pfad, dh. ein buchstäblicher Raum. Ein Literalraum muss in der Regex mit Backslash versehen sein (weil Leerzeichen Begrenzer in Apache-Konfigurationsdateien sind). Zum Beispiel:
RewriteRule ^([A-Za-z0-9\ ]+)$ viewProfile.php?Name=$1 [L]
Alternativ können Sie auch die Kurz Hand Zeichenklasse \s
für jede white-space Zeichen. Einige würden betrachten diese leichter zu lesen (da Sie nicht wirklich „sehen“ können Leerzeichen):
RewriteRule ^([A-Za-z0-9\s]+)$ viewProfile.php?Name=$1 [L]
Oder Sie können nur einen nicht entkommen Raum nutzen und das gesamte Muster in doppelten Anführungszeichen umgeben:
RewriteRule "^([A-Za-z0-9 ]+)$" viewProfile.php?Name=$1 [L]
Beachten Sie, dass die obigen Muster Leerzeichen am Anfang und Ende des URL-Pfads (Profilname) zulassen. Diese werden offensichtlich am besten vermieden, wenn der Profilname an erster Stelle erstellt wird.
Unnötig zu sagen, Leerzeichen sind problematisch in URLs und am besten von Anfang an vermieden. Im Falle eines "Profilnamens" würden Sie idealerweise eine separate "URL-Version" des Profilnamens erstellen, der nur in der URL verwendet wird, z. , All Klein Räume Bindestriche konvertieren: /san-francisco
Um Bindestriche (-
) in dem Muster enthält, müssen diese am Anfang oder am Ende der Zeichenklasse enthalten sein (da Bindestriche sonst besondere Bedeutung in einer Zeichenklasse tragen).Zum Beispiel:
RewriteRule ^([A-Za-z0-9\s-]+)$ viewProfile.php?Name=$1 [L]
Damit Unterstrichen (_
) als auch in dem Profilname (URL-Pfad), dann fügen Sie einfach die _
überall in der Zeichenklasse:
RewriteRule ^([A-Za-z0-9_\s-]+)$ viewProfile.php?Name=$1 [L]
Welche ist das gleiche wie:
RewriteRule ^([\w\s-]+)$ viewProfile.php?Name=$1 [L]
die Kurz Hand Zeichenklasse Mit \w
, um irgendein Wortzeichen darzustellen, dh. [a-zA-Z0-9_]
.
Ein '+' könnte auch anstelle eines Platzes gehen und trotzdem am selben Ort ankommen. –
@AuntJamaima Ein '+' (plus) im URL-Pfad Teil der URL ist ein Literal '+', kein Leerzeichen. Das '+' ist nur eine alternative Codierung für den Bereich im Abfragezeichenfolgeteil der URL. – MrWhite