2009-03-02 13 views
6

Come molti altri sto riscontrando problemi con la mod_rewriting molto semplice in apache.Problema riscrittura mod

Ho la seguente nel mio .htaccess:

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/
RewriteRule ^view/([0-9]+)/([0-9]+)$ view.php?advertId=$1&publisherId=$2 [NC,QSA,L] 

che si suppone di tradurre/view/4093/203 qs = val -> /view.php?advertId=4093 & ID publisher = 203? qs = val

Ora funziona quando lo si chiama con/View ..., ma quando si esegue in minuscolo/vista, si reindirizza al file giusto, ma advertId e publisherId non sono impostati all'interno del mio script PHP così come lo è con la prima lettera maiuscola View e io semplicemente non ho idea di cosa stia succedendo su quel fronte (sto testando e osservando quel comportamento semplicemente facendo un test sulla mia v iew.php).

Qualcuno sa perché questo sta accadendo?

mi può essere utile aggiungere, la mia assistente Info è la seguente:

Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny2 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 mod_perl/2.0.4 Perl/v5.10.0 

IE. una nuova installazione debian di serie con pacchetti debian predefiniti + php-mssql.

risposta

10

MultiViews potrebbe causare questo comportamento, ovvero provare ad associare la richiesta a un file esistente siminar prima di passare la richiesta a mod_rewrite. Provare a disabilitarlo:

Options -MultiViews 
+0

Bloody brilliant! Posso chiederti come e perché? – kastermester

+0

'MultiViews' è una funzione principale che viene eseguita prima di mod_rewrite. Quando 'MultiViews' è abilitato, Apache sta cercando di trovare un nome file simile a quello che può essere mappato il percorso della richiesta. Quindi il tuo '/ view/...' è mappato a '/ view.php/...' e poi passato a mod_rewrite, che quindi non riesce a trovare una corrispondenza. – Gumbo

+0

Ah ok, beh, grazie un sacco per l'aiuto, mi sono preso un sacco di sforzo cercando di scherzare con la riscrittura, che ovviamente non ha aiutato nulla - il vostro aiuto è molto apprezzato! :) – kastermester