2013-01-08 21 views
5

próbuję usunąć index.php tworzą URL:Jak usunąć index.php z smukłej ramowej URL

to działa

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

to nie działa

http://server/bw/test 

Próbuję zmienić .htaccess i oglądać w sieci, widzę, że powinno być tak:

RewriteEngine On 
RewriteBase /bw/ 

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

próbuję edycji to w ten sposób:

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

lub w ten sposób:

RewriteEngine On 

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

lub w ten sposób:

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

ale gdy próbuję uzyskać dostęp do http://server/bw/test to mówi:

Not Found 

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

Apache/2.2.15 (CentOS) Server at server Port 80 

Sprawdzam, czy w moim httpd.confLoadModule rewrite_module modules/mod_rewrite.so jest włączone. Nie wiem, co teraz zrobić.

jak mogę rozwiązać? proszę pomóż mi!

Odpowiedz

6

Wypróbuj to, czego użyłeś np. w WordPress

RewriteRule . index.php [L] 

lub tego, który jest używany przez np. Lavavel PHP Framework

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

Można także rozważyć dodanie

RewriteCond %{REQUEST_FILENAME} !-d 

przed RewriteRule również wykluczyć istniejące katalogi nie tylko istniejące pliki. Ale to zależy od ciebie.

+0

nic .. nie działa .. zarówno z pierwszych i drugich zasad – JackTurky

+0

Jeśli umieścisz te linie do a. Plik htaccess należy sprawdzić, czy dyrektywa AllowOverride ma wartość All lub FileInfo w twoim httpd.conf lub konfiguracja VirtualHost, ponieważ mod_rewrite tego potrzebuje (patrz [dokumentacja Apache] (http://httpd.apache.org/docs/current/mod/core.html#allowoverride)) – Dehalion

+0

Próbowałem ustawić AllowOverride na All inside httpd.conf, ale kiedy próbuję przejść do adresu URL bez index.php, ładuje on index.php katalogu, który znajduje się nad katalogiem zawierającym index.php z wąskiej struktury – JackTurky

0

Dla mnie, mam rzeczy do pracy za pomocą tego wiersza od Dehalion za odpowiedź:

RewriteRule . index.php [L] 

Więc index.php (lub dowolny xyz.php) plik nie jest widoczny w adresie URL żądania

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

z następującymi zastrzeżeniami:

  1. masz ten szlak zdefiniowane:

    $ app-> get ('/ mojafirma/hello /: nazwa', doHello);

  2. Element główny (dla trasy/mojafirma/..) jest nazwa pliku.
    Oznacza to, że trasa istnieje w pliku o nazwie "mojafirma".php”

Tak, to jest bit hack ... ale ponieważ uważam apache config mylące/zastraszenia :) ... ja figura to rozwiązanie jest na tyle stabilny, aby spełnić wymagania.

0

w moim przypadku zaktualizowane AllowOverride All, następnie uruchomić sudo a2enmod rewrite uniknąć wewnętrzny błąd 500 następnie ponownie uruchomić Apache service apache2 restart