.htaccess-Umleitungs-URL ohne nachgestellte Schrägstriche

9

In meinem htaccess habe ich einige umgeschriebene URLs wie diese:

RewriteRule ^first-page$ /subdir/page.php?id_page=1 [QSA,L]
RewriteRule ^second-page$ /subdir/page.php?id_page=2 [QSA,L]
RewriteRule ^third-page$ /subdir/page.php?id_page=161 [QSA,L]

Das Endergebnis ist also: www.mywebsite.com/subdir/first-page

Jetzt möchte ich daraus machen www.mywebsite.com/subdir/first-page/

Ohne die www.mywebsite.com/subdir/first-pageAngabe eines 404-Fehlers.

Ich habe diesen Code nach dem Umschreiben der URL ausprobiert, aber nicht funktioniert:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]

Irgendwelche Vorschläge? Ich danke dir sehr.

Stephen Ostermiller
quelle

Antworten:

4

Versuchen Sie es entweder

RewriteRule ^first-page/$ /subdir/page.php?id_page=1 [QSA,L]
RewriteRule ^second-page/$ /subdir/page.php?id_page=2 [QSA,L]
RewriteRule ^third-page/$ /subdir/page.php?id_page=161 [QSA,L]

oder

RewriteRule ^first-page /subdir/page.php?id_page=1 [QSA,L]
RewriteRule ^second-page /subdir/page.php?id_page=2 [QSA,L]
RewriteRule ^third-page /subdir/page.php?id_page=161 [QSA,L]

Das $Zeichen teilt Apache mit, dass dies das Ende der Zeichenfolge ist und keine weiteren Zeichen erwartet werden. Sie müssen es also benachrichtigen, um den Schrägstrich am Ende der Zeichenfolge zu akzeptieren oder einfach für zusätzliche Zeichen bereit zu sein. Sie können das ?Flag verwenden, um den abschließenden Schrägstrich nicht erforderlich zu machen, aber akzeptiert, falls vorhanden, z.

RewriteRule ^first-page(/)?$ /subdir/page.php?id_page=1 [QSA,L]

Dies lässt also keine anderen Zeichen als Schrägstriche zu.

Hoffe das hilft.

aexl
quelle
Danke, Mann! Hinzufügen (/)? am Ende der URL löste das Problem. Die bevorzugte URL ist jedoch immer noch die ohne Schrägstrich. Könnten Sie mir bitte so freundlich sagen, was ich tun könnte, um die URL mit dem Schrägstrich wie gewünscht zu erstellen?
0

Versuche dies

RewriteRule ^first-page($|/$) /subdir/page.php?id_page=1 [QSA,L]
RewriteRule ^second-page($|/$) /subdir/page.php?id_page=2 [QSA,L]
RewriteRule ^third-page($|/$) /subdir/page.php?id_page=161 [QSA,L]

($ | / $) - Es erlaubt sowohl www.mywebsite.com/subdir/first-pageals auch www.mywebsite.com/subdir/first-page/. Es stellt auch sicher, dass keine unerwünschten URLs wie zugelassen werden www.mywebsite.com/subdir/first-page/some-unwanted-text.

Wenn Sie die URL mit beliebigen Parametern möchten, können Sie diese wie folgt verwenden

RewriteRule ^third-page/?$ /subdir/page.php?id_page=161 [QSA,L]
Silambarasan RD
quelle