In meinem aktuellen Projekt habe ich mehrere Verzeichnisse: application (meine MVC-Dateien, auf die nicht zugegriffen werden darf), images, css und js. Eigentlich möchte ich, dass alle Anfragen an images/css/js unverändert weiterlaufen, aber alle anderen möchte ich aufrufen index.php/my/path
.
Meine .htaccess sieht derzeit wie folgt aus und bringt mein Routing durcheinander.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|images|js|css|robots\.txt)
RewriteRule ^(.*)$ http://example.com/index.php/$1 [L]
</IfModule>
Dies funktioniert nicht, da sich die relativen URLs stapeln, wie z. B.: example.com/blog/view/1/blog/view/2
.
Wenn ich etwas versuche wie
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(index\.php|images|js|css|robots\.txt)
RewriteRule ^ index.php%{REQUEST_URI} [PT]
</IfModule>
Ich erhalte diesen Fehler bei jeder Anfrage: No input file specified.
Wie kann ich erzwingen, dass alle Anfragen, die nicht an meine Verzeichnisse auf der Whitelist gerichtet sind, angerufen und nicht weitergeleitet werden (Umleitung tötet Postings, habe ich festgestellt), index.php/path
? IE, wenn /blog/view/1
vom Browser angefordert wird, .htaccess ruft auf. index.php/blog/view/1
. Die Referenzdateien auf der Apache-Website sind nicht sehr klar darüber, wie man so etwas macht - oder ich verstehe einfach nicht, was ich über RewriteRule lese.
Und ich möchte das wirklich verstehen. Warum wird Ihre Antwort funktionieren? Warum scheitern meine Versuche?
0 Stimmen
Für Unwissende wie mich: "Die
L
Flag weist den Apache an, die Verarbeitung der Rewrite-Regeln für diese Anfrage zu stoppen", weil ich diePT
vor.