2013-01-08 13 views
5

Ich versuche, eine URL zu entfernen index.php bilden:Wie index.php von schlanker Rahmen URL entfernen

das funktioniert

http://server/bw/index.php/test 

dies nicht funktioniert

http://server/bw/test 

ich versuche, .htaccess zu ändern und im Internet zu sehen, sehe ich, dass es so sein sollte:

RewriteEngine On 
RewriteBase /bw/ 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [QSA,L] 

Ich versuche, ihn zu bearbeiten auf diese Weise:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [QSA,L] 

oder auf diese Weise:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^/bw/index.php [QSA,L] 

oder auf diese Weise:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-d 

Aber wenn ich versuche, es zu http://server/bw/test zugreifen sagt mir:

Not Found 

The requested URL /bw/test was not found on this server. 

Apache/2.2.15 (CentOS) Server at server Port 80 

ich überprüfen, ob in meinem httpd.confLoadModule rewrite_module modules/mod_rewrite.so wird ermöglichen .. Ich weiß nicht, was jetzt zu tun ..

Wie kann ich lösen? Bitte hilf mir!

Antwort

6

Versuchen Sie dies, die z. in WordPress

RewriteRule . index.php [L] 

oder dies, die z. Lavavel PHP Framework

RewriteRule ^(.*)$ index.php/$1 [L] 

Sie könnten auch erwägen

RewriteCond %{REQUEST_FILENAME} !-d 

vor dem RewriteRule auch das Hinzufügen vorhandene Verzeichnisse ausschließen, nicht nur bestehende Dateien. Aber das liegt an dir.

+0

nichts zu tun .. es nicht funktioniert .. mit den beiden ersten und zweiten Regeln – JackTurky

+0

Wenn Sie diese Zeilen in eine setzen. htaccess - Datei sollten Sie überprüfen, ob Sie die Direktive AllowOverride auf All oder FileInfo in Ihrem httpd.conf oder die VirtualHost-Konfiguration, da mod_rewrite dies benötigt (siehe [Apache-Dokumentation] (http://httpd.apache.org/docs/current/mod/core.html#allowoverride)) – Dehalion

+0

Ich habe versucht, AllowOverride auf All inside zu setzen httpd.conf aber wenn ich versuche, zu der URL ohne index.php zu gehen, lädt es die index.php des Verzeichnisses, das über dem Verzeichnis ist, das die index.php des dünnen Rahmenwerks – JackTurky

0

Für mich habe ich die Dinge mit dieser Linie von Dehalion Antwort zu arbeiten:

RewriteRule . index.php [L] 

So ist die index.php (oder jede xyz.php) Datei ist nicht in der Anforderungs-URL gesehen

http://localhost/demo1/mycompany/hello/Jim 

Mit den folgenden Einschränkungen:

  1. Sie haben diese Route definiert:

    $ app-> get ('/ mycompany/hallo /: name', doHello);

  2. Das Wurzelelement (für die Route/mycompany/..) ist auch der Name der Datei.
    Das heißt, die Route existiert in einer Datei namens "Mycompany".php“

Ja, es ist ein bisschen wie ein Hack ... aber da ich Apache-Konfiguration finden verwirrend/einschüchternd :) ... ich meine, diese Lösung stabil genug ist, um die Anforderungen zu erfüllen.

0

in meinem Fall habe ich AllowOverride All aktualisiert, dann sudo a2enmod rewrite laufen interne 500-Fehler zu vermeiden, starten Sie Apache service apache2 restart

Verwandte Themen