2012-04-08 3 views
1
Options -Indexes 
RewriteEngine on 
Options +FollowSymLinks 

RewriteRule ^$ 2012/index.php [L] 
RewriteCond %{DOCUMENT_ROOT}/2012%{REQUEST_URI} -f 
RewriteRule .* 2012/$0 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* 2012/index.php$0 [QSA] #<-- this is wrong here, and gives 500 error 

Ich versuche, alle meine URLs aus dem Unterordner 2012 Server.Rewrite Root-Zugriff von einer Sub-Domäne bedient

habe ich versucht, das Skript, und es nicht für Urls wie:

index.php/admin/controller/action?id=123

, die aus dem Unterordner ist
2012/index.php/admin/controller/action?id=123

was falsch gelöst werden sollte?

+0

Was erwarten Sie, wenn Sie 'index.php/admin/controller/action? Id = 123' anfordern? –

+0

Ich will, dass serviert von '2012/index.php/admin/controller/action? Id = 123' – Pentium10

Antwort

0

Ich werde erraten, dass die URI /index.php/admin/controller/action?id=123 den -f Test für %{DOCUMENT_ROOT}/2012%{REQUEST_URI} schlägt fehl, und stattdessen wird durch die letzte Regel aufzurunden immer: RewriteRule .* 2012/index.php?q=$0 [QSA], die URI in /2012/index.php?q=index.php/admin/controller/action&id=123 drehen. Sie müssen einen Sonderfall hinzufügen, da die erste Bedingung/Regel die bestehenden Dateien so umschreibt, wie sie sind, und die letzte Bedingung/Regel als "Catch-All" fungiert (und die allererste Regel einfach ist) für den Spezialfall, wenn die Anfrage-URI / ist). so etwas wie dies versuche:

RewriteRule ^$ 2012/index.php [L] 
RewriteCond %{REQUEST_URI} ^/index\.php [OR] 
RewriteCond %{DOCUMENT_ROOT}/2012%{REQUEST_URI} -f 
RewriteRule .* 2012/$0 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* 2012/index.php?q=$0 [QSA] 

Der neue Zustand RewriteCond %{REQUEST_URI} ^/index\.php [OR] zufrieden sein wird, wenn eine Anforderung mit /index.php Start gemacht wird und die URI wird neu geschrieben in dem/2012/Verzeichnis wie sie ist. Die [OR] stellt sicher, dass die vorherige Bedingung eines direkten Zugriffs eingehalten wird.

+0

Es gibt keine Umwandlung in' index.php? = Q', das ist nur schlecht Beispiel, wie ich es nicht tat weiß, wie es geht. Ich möchte, dass es so beibehalten wurde, wie es war, also sollte es zu "2012/index.php/admin/controller/action? Id = 123" wie in meinem Kommentar umgeleitet werden. Ihr Beispiel kann "index.php/admin" nicht auflösen – Pentium10

Verwandte Themen