2009-08-12 19 views
5

Po przesłaniu mojego projektu Kohana do mojego serwera GoDaddy, zauważyłem mój standardowy plik .htaccess nie działa wystarczająco, aby zapewnić czyste adresy URL. Po pewnym kierunkiem, skończyło się z następującą zasadą:

RewriteRule .* index.php?kohana_uri=$0 [PT,L] 

Ten dostał moi mili-URL działa ponownie, ale dzisiaj uważam, że to może być złamanie mojego wewnętrznego wyszukiwarkach, która wykorzystuje również uzyskać stylu zmienne:

/search?terms=php 

Wartości nie są znalezione przez skrypty. Są na moim serwerze programistycznym, który nie ma zmodyfikowanej RewriteRule, ale nie na serwerze GoDaddy, który używa RewriteRule.

mam rację zakładając, że regułę łamie żadnych zdolności skryptów do odczytu z $ _GET, a jeśli tak, to w jaki sposób można temu zaradzić?

Odpowiedz

8

Może użyciu QSA w swoim rewriterules, tak:

RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L] 

Zobacz manual of mod_rewrite (cytowanie):

'qsappend | QSA' (string zapytanie append)

ta flaga zmusza mechanizm przepisywania do dołączenia ciągu zapytania o numerze ciągu zastępującego do istniejącego ciągu znaków zamiast zastępowania to. Użyj tej opcji, jeśli chcesz dodać więcej danych do ciągu zapytania za pomocą przepisanej reguły .

może pomóc (nie testowane w danym przypadku, ale pamiętam wykorzystali to jakiś czas temu, z jakiegoś rodzaju problem jak ten)

+0

To zadziałało. Zaczekam i pozwolę innym uczestniczyć (ponieważ wiem bardzo niewiele o .htaccess i jako takie, jeśli jest to najlepsze rozwiązanie), zanim zaakceptuję. Dziękuję Ci! – Sampson

+0

Nie ma problemu :-) nie ma za co! –

1

Myślę, że można dodać: RewriteCond $1 !^(search) lub odmianę takiego.

0

Jeśli chcesz użyć standardowej praktyki i bez łańcucha zapytania musisz po prostu wykonać te kroki i będzie działać tak samo jak localhost. Nie musisz zmieniać reguł przepisywania.

Go do swojego menedżera plików GoDaddy konto -> katalog WebRoot -> Tworzenie php5.ini jeśli nie istnieje, a miejsce następujący wiersz: cgi.fix_pathinfo = 1

Teraz trzeba ponownie uruchomić proces WWW :

1.) Zaloguj się do swojego Account Managera. 2.) Kliknij Web Hosting. 3.) Obok konta hostingowego, którego chcesz użyć, kliknij Uruchom. 4.) W sekcji Monitorowanie statystyk & kliknij opcję Procesy systemowe. 5.) Na liście po lewej stronie kliknij proces, który chcesz wyświetlić, lub kliknij opcję Wszystkie procesy, aby wyświetlić wszystkie procesy jednocześnie. 6.) Aby zakończyć proces, kliknij odpowiedni przycisk końcowy na pasku narzędzi.

Teraz możesz użyć URI_PROTOCOL jako Auto.