2013-06-02 23 views
5

Próbuję przepisać wszystkie www.site.com/hello to www.site.com/index.php?p=hello i działa z następującego kodu (w .htaccess):RewriteCond z negatywnymi warunkami

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]*)/?$ /index.php?p=$1 

Ale chcę zachować stare linki pracujące tak www.site.com/?p=hello pozostanie www.site.com/?p=hello

próbowałem poniższy kod, ale to nie będzie działać

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(\?p=) 
RewriteRule ^([^/]*)/?$ /index.php?p=$1 

Odpowiedz

5

I znalazłem odpowiedź.

Błąd próbował uzyskać parametry GET za pomocą REQUEST_URI. Właściwe użycie powinno być zgodne z QUERY STRING w następujący sposób:

RewriteCond %{QUERY_STRING} !(p=.*)$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]*)/?$ /index.php?p=$1