Ich entwerfe meine Anwendung. Und ich sollte die nächsten Dinge machen. Alle GET-Parameter (? Var = value) sollten mit Hilfe von mod_rewrite in den/var/value transformiert werden. Wie kann ich das machen? Ich habe nur 1 .php Datei (index.php), weil ich das FrontController Muster benutze. Kannst du mir mit diesen mod_rewrite Regeln helfen?
Entschuldigung für mein Englisch. Vielen Dank im Voraus.PHP alle GET Parameter mit mod_rewrite
Antwort
Ich mache so etwas auf Websites, die 'seo-freundliche' URLs verwenden.
In .htaccess:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
Dann auf index.php:
if ($_SERVER['REQUEST_URI']=="/home") {
include ("home.php");
}
Die .htaccess-Regel sagt es index.php zu laden, wenn die Datei oder das Verzeichnis gefragt wurde nicht gefunden. Dann parsen Sie einfach die Anfrage-URI, um zu entscheiden, was index.php tun soll.
Schön. Genau das habe ich gebraucht. – Qix
AFAIK mod_rewrite behandelt keine Parameter nach dem Fragezeichen - regexp Zeilenende für Umschreibungsregeln entspricht dem Ende des Pfads vor dem '?'. Sie sind also ziemlich darauf beschränkt, die Parameter zu übergeben oder beim Umschreiben ganz zu löschen.
.htaccess
RewriteEngine On
# generic: ?var=value
# you can retrieve /something by looking at $_GET['something']
RewriteRule ^(.+)$ /?var=$1
# but depending on your current links, you might
# need to map everything out. Examples:
# /users/1
# to: ?p=users&userId=1
RewriteRule ^users/([0-9]+)$ /?p=users&userId=$1
# /articles/123/asc
# to: ?p=articles&show=123&sort=asc
RewriteRule ^articles/([0-9]+)/(asc|desc)$ /?p=articles&show=$1&sort=$2
# you can add /? at the end to make a trailing slash work as well:
# /something or /something/
# to: ?var=something
RewriteRule ^(.+)/?$ /?var=$1
Der erste Teil ist die URL, die empfangen wird. Der zweite Teil der umgeschriebenen URL, die Sie mit $_GET
auslesen können. Alles zwischen (
und )
wird als eine Variable angesehen. Die erste wird $1
sein, die zweite $2
. Auf diese Weise können Sie genau bestimmen, wo die Variablen in die umgeschriebene URL gehen sollen und damit wissen, wie sie abgerufen werden.
Sie können es sehr allgemein halten und "alles" mit (.+)
ermöglichen. Dies bedeutet einfach: eine oder mehrere (+
) eines beliebigen Zeichens (.
). Oder spezifischer sein und z.B. Nur Ziffern zulassen: [0-9]+
(ein oder mehrere Zeichen im Bereich von 0 bis 9). Sie können viele weitere Informationen zu regulären Ausdrücken unter http://www.regular-expressions.info/ finden. Und das ist ein guter Ort, um sie zu testen: http://gskinner.com/RegExr/.
Der folgende Code in Ihrem .htaccess wird Ihre URL von zB neu schreiben. /api?other=parameters&added=true
zu /?api=true&other=parameters&added=true
RewriteRule ^api/ /index.php?api=true&%{QUERY_STRING} [L]
Genau das habe ich gesucht! Vielen Dank! – Aaron
- 1. PHP Get URL mit Parameter
- 2. PHP + Zeichencodierung + GET-Parameter
- 3. entfernen .php mit mod_rewrite
- 4. PHP/Ajax - Mehrere GET Parameter
- 5. Wie Apache Mod_rewrite zu verwenden, um PHP-Erweiterung zu entfernen, während die GET-Parameter beibehalten werden?
- 6. mod_rewrite alle/etwas
- 7. mod_rewrite page.php? Param = parameter zu parameter.html
- 8. .htaccess mod_rewrite Sprache in URL + Parameter
- 9. Php get Parameter von SEO URL
- 10. URL mit mod_rewrite bereinigen
- 11. GET von PHP-Parameter an AJAX senden
- 12. machen PHP GET-Parameter aussehen wie Verzeichnisse
- 13. PHP-GET-Parameter nicht ohne Seitenaktualisierung
- 14. Apachen mod_rewrite VS. PHP-Routing?
- 15. Mod_rewrite alle Anfrage an Unterverzeichnis
- 16. merkwürdige Situation mod_rewrite und PHP
- 17. Wie URL in URL (als GET-Parameter) mit PHP übergeben?
- 18. PHP Problem Decodierung GET Parameter mit doppelten Anführungszeichen
- 19. Get Parameter von URL mit PHP oder jQuery/Javascript
- 20. mod_rewrite für PHP RESTful Server
- 21. Get URL Parameter
- 22. Get URL-Parameter mit jquery
- 23. .htaccess umschreiben eines GET Parameter
- 24. : mod_rewrite: erzeugen URL basierend auf übergebenen Parameter
- 25. Alle URLs umleiten zu mod_rewrite Fehlerseite
- 26. PHP include() betroffen von mod_rewrite
- 27. Rewriting Abfrage String mit mod_rewrite
- 28. php Zend/MVC ohne mod_rewrite
- 29. PHP Redirect mit GET
- 30. mod_rewrite Anzahl der Parameter/Rückreferenzierungen Begrenzung
, die für beide erschreckende Geräusche, die Sie und Ihre Benutzer. Im Allgemeinen ist es eine gute Idee, den Pfad so aussehen zu lassen, wie er Inhalt angibt, aber andere Parameter in Ruhe lassen. Zum Beispiel könnten Sie statt /content.php?id=5/content/5 haben. Wenn Sie jedoch eine Handvoll Optionen für etwas haben, sollten Sie etwas wie/content/5 tun? Opt1 = etwas & opt2 = etwas. – Brad