It seems you're mixing Wordpress
itself, which tries to do a redirect, and the RewriteRule
, where you don't have to do a redirect: it's rewritten internally before arriving to Php, thus before arriving to Wordpress
. If you just stop rewriting and add the QSA
flag to always keep the query string, this should do the trick.
Try to do this:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]
If it doesn't work, try to do this:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]
If it doesn't work, try to do this:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !(index\.php)
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]
And if that's not enough:
Two hints:
If you're not in a hosted environment (= if it's your own server and you can modify the virtual hosts, not only the .htaccess
files), try to use the RewriteLog
directive: it helps you to track down such problems:
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
My favorite tool to check for regexp:
http://www.quanetic.com/Regex (don't forget to choose ereg(POSIX) instead of preg(PCRE)!)
RewriteLogLevel
. Note this needs to be set in your server config, not in .htaccess. – user123444555621 Jan 12 '12 at 15:15