2009-02-17 15 views
7

Faktycznie URL, który używa moja aplikacja jest:PHP reguły przepisywania

http://site.com/search.php?search=iPhone 

ale chciałbym, aby można osiągnąć to samo z

http://site.com/iPhone 

nie mam doświadczenia z reguły przepisywania, jak mogę to ustawić?

Rozwiązanie zadziałało, ale nowy adres URL jest wyświetlany na pasku adresu. Myślałem, że byłoby to możliwe, aby ustawić to tak, że wydaje się, że lokalizacja strona jest

http://site.com/iPhone

bez zmiany wyświetlać

http://site.com/search.php?search=iPhone 

Czy to możliwe? Dzięki.

Odpowiedz

10

Utwórz plik o nazwie .htaccess w katalogu głównym witryny i umieść to w niej.

RewriteEngine on 
Options +FollowSymlinks 
RewriteBase/

RewriteRule ^(.*) search.php?search=$1 [R] 

Powinien załatwić sprawę.

Sugerowałbym jednak, aby uczynić go nieco bardziej szczegółowym, więc może wymagać użytkownika z katalogu wyszukiwania w twoim adresie URL. na przykład zamiast stosowania mysite.com/IPhone mysite.com/search/IPhone które działają jak

RewriteEngine on 
Options +FollowSymlinks 
RewriteBase/

RewriteRule ^search/(.*) search.php?search=$1 [R] 

To sprawia, że ​​łatwiej jest mieć normalne stron, które arnt przekierowanych, jak o nas lub zasadowym głównej.

Jak mówi Chris, to nie jest PHP, ale Apache, który to robi, i to, czy to działa, może zależeć od konfiguracji hostingu.

3

Reguły przepisywania nie są częścią PHP, o ile mi wiadomo, ale Apache (konkretnie mod_rewrite) lub jakikolwiek serwer, którego używasz. Dla Apache, należy na serwerze, aby mieć plik o nazwie .htaccess, aw nim umieścić coś takiego:

RewriteEngine on 
RewriteRule ^(\w+)/?$ /index.php?search=$1 

^(\w+)/?$ jest wyrażenie regularne - pasuje dowolne słowo 1 lub więcej znaków, a następnie przez / być może . Więc zmienia się site.com/iPhone w site.com/index.php?search=iPhone. Brzmi poprawnie?

Powiązane problemy