Übergeben Sie mehr als einen Parameter per htaccess

Übergeben Sie mehr als einen Parameter per htaccess

Ich habe ein System, bei dem jeder Benutzer eine Subdomäne und eine eigene Datenbank hat. Beispiel:

usuarioa.system.com
usuariob.system.com

Um das Unterverzeichnis beim Durchsuchen des Systems in der Navigationsleiste zu behalten, habe ich die folgende Regel verwendet:

RewriteEngine on
RewriteCond% {HTTP_HOST} ^ usera.system.com $ [OR]
RewriteCond% {HTTP_HOST} ^ www.usera.system.com $
RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]

Es funktioniert einwandfrei, da über PHP mit $_REQUEST eine direkte Verbindung zur richtigen Datenbank hergestellt wird. Das Problem ist, dass diese Regel nicht mehr als einen Parameter akzeptiert und jede Änderung, die ich vornehme, den Fehler 403 auslöst. Ich habe also eine temporäre Lösung in PHP erstellt, möchte aber nicht damit weitermachen:

list ($queryString, $id) = explode ("user =", $ _SERVER [' REQUEST_URI ']);
list ($id, $idUsu) = explode (".", $id);

Wie kann ich 02 Parameter direkt über htaccess übergeben und dabei das Unterverzeichnis in der Navigationsleiste behalten?

Entschuldigen Sie mein Englisch, ich verwende den Bing-Übersetzer.

Antwort1

RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]

Wenn Sie sich auf die Übergabe zusätzlicher Abfrageparameter aus der ursprünglichen Anfrage an dieAuswechslung, dann benötigen Sie das QSAFlag (Query String Append) in der RewriteRuleDirektive.

Die QSAFlaggeverschmilztdie Abfragezeichenfolge aus der Anfrage mit der Abfragezeichenfolge, die Sie auf derAuswechslung, andernfalls überschreibt die von Ihnen angegebene Abfragezeichenfolge die Abfragezeichenfolge in der Anforderung und diese wird nicht durchgereicht.

Zum Beispiel:

RewriteRule (.*) http://www.system.com/access/$1?user=usera [QSA,P]

Beiseite:Das...

RewriteCond% {HTTP_HOST} ^usera.system.com$ [OR]
RewriteCond% {HTTP_HOST} ^www.usera.system.com$

Ist dasselbe wie das Folgende und ermöglicht auch FQDN (endet mit einem Punkt):

RewriteCond% {HTTP_HOST} ^(www\.)?usera\.system\.com [NC]

Denken Sie daran, die Punkte zu escapen, um einen wörtlichen Punkt abzugleichen, andernfalls gleichen Sie abbeliebigZeichen. Das NCFlag dient lediglich dazu, fehlerhafte Anfragen abzufangen.

verwandte Informationen