Frage

Ich entwickle eine App vor Ort (unter Domain-Namen .dev ).

Um mit freundlicher Urls zu arbeiten, ich habe meine .htaccess wie folgt aufgebaut:

RewriteEngine on
# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://example.com/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

Es funktioniert gut. Nervend, wenn Sie online gehen, es ist nicht so groß:

http://example.com/issue/my-slug/#23 gibt kein GET-Variable. Warum?

War es hilfreich?

Lösung

Meine Vermutung, basierend auf den Erfahrungen der Vergangenheit ist RewriteBase, wahrscheinlich, weil Ihr auf einem gemeinsamen Server oder einem anderen Nicht-Standard-Konfiguration.

RewriteEngine on

#Set base as doc root.
RewriteBase /

# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

Andere Tipps

Ich sehe, dass nicht

RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]

sollte diese URL übereinstimmen, aber das ist die einzige mit dem [R] Flagge eine externe Umleitung zu tun. Versuchen Sie diese Zeile aus zu kommentieren, um sicherzustellen, dass es nicht einige andere Teil Ihrer Anwendung ist die Umleitung zu tun. Meine Vermutung ist, dass es gibt.

Es gibt einige Leerzeichen zwischen der Substitution URL fehlt und die Fahnen. Sie können auch Ihre erste Regel vereinfachen wie folgt:

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top