2009-08-12 15 views
5

Dopo aver caricato il mio progetto Kohana sul mio server Godaddy, ho notato che il mio file .htaccess standard non funzionava a sufficienza per fornire gli URL puliti. Dopo alcune linee guida, ho finito con la seguente regola:

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

Questa avuto il mio bel-URLs lavorare di nuovo, ma oggi scopro che si può rompere la mia ricerca-motore interno, che utilizza anche GET-style variabili:

/search?terms=php 

I valori non vengono trovati dagli script. Sono sul mio server di sviluppo che non ha la RewriteRule modificata, ma non sul server Godaddy che usa RewriteRule.

Ho ragione nell'assumere che la regola stia violando la capacità di lettura degli script da $ _GET e, in tal caso, come posso rimediare?

risposta

8

Forse usando QSA nei vostri RewriteRules, in questo modo:

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

Vedere il manual of mod_rewrite (citando):

'qsappend | QSA' (string query di accodamento)

Questo flag forza il motore di riscrittura ad aggiungere una stringa di query parte della stringa di sostituzione alla stringa esistente , invece di sostituire esso. Da utilizzare quando si desidera aggiungere altri dati alla stringa di query tramite una regola di riscrittura .

potrebbe aiutare (non testato nel vostro caso particolare, ma mi ricordo hanno utilizzato questo qualche tempo fa, di un qualche tipo di problema come questo)

+0

Ha funzionato. Aspetterò e lascerò partecipare gli altri (visto che so molto poco di .htaccess, e come tale se questa è la soluzione migliore) prima di accettare. Grazie! – Sampson

+0

Nessun problema :-) prego! –

1

Penso che si potrebbe aggiungere: RewriteCond $1 !^(search), o una variazione di tale.

0

Se si desidera utilizzare una pratica standard e senza stringa di query è sufficiente seguire questi passaggi e funzionerà proprio come localhost E non è necessario modificare le regole di riscrittura.

Vai al tuo file manager conto Godaddy -> elenco WebRoot -> Crea php5.ini se non esiste e posto seguente riga: cgi.fix_pathinfo = 1

Ora è necessario riavviare il processo di Web :

1.) Accedi al tuo gestore account. 2.) Fare clic su Web Hosting. 3.) Accanto all'account di hosting che si desidera utilizzare, fare clic su Avvia. 4.) Nella sezione Stats & Monitor, fare clic su Processi di sistema. 5.) Nell'elenco a sinistra, fare clic sul processo che si desidera visualizzare o fare clic su Tutti i processi per visualizzare tutti i processi contemporaneamente. 6.) Per terminare un processo, fare clic sul pulsante corrispondente corrispondente sulla barra degli strumenti.

Ora è possibile utilizzare URI_PROTOCOL come Auto.

Problemi correlati