I think you can add your stuff either above the # BEGIN WordPress or below # END WordPress. Don’t leave the .htaccess writeable once you’ve edited though!
Okay that doesn’t mess up WP, which is good, but my redirects don’t seem to do anything.
Here is the htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /area51blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /area51blog/index.php [L]
</IfModule>
# END WordPress
RewriteRule ^sites.php$ /links/ [R=301]
Is there something wrong?
You need to add it above the WordPress rules because WordPress will hijack pretty much everything that isn’t a real folder or file or whatnot. 😉
Ah, didn’t realize that. Thanks for that info, Viper!
I believe these three lines say that if it isn’t a real file or directory, then give the URL to WordPress’ index.php file:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /area51blog/index.php [L]
So if you want to avoid that, you gotta handle it before it gets given to WordPress. 🙂
Don’t leave the .htaccess writeable once you’ve edited though!
For security or so that WordPress won’t overwrite it? If it’s the latter, then there’s no need to worry. That’s the whole point of the # BEGIN WordPress
and # END WordPress
. When WordPress regenerates it’s rules, it only replaces the stuff inbetween those two lines. So as long as your custom stuff is outside of them, they won’t be touched. 😉
Sorry but it’s still having no effect.
Here’s the new .htaccess:
RewriteEngine on
RewriteRule ^links.php$ /links/ [R=301]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /area51blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /area51blog/index.php [L]
</IfModule>
# END WordPress
RewriteRule ^links.php?$ /links/ [QSA,L]
Sorry Viper007Bond but I wanted it to redirect links.php to /links/, not rewrite.
I meant that I was using mod_rewrite to redirect since most plugins didn’t really work well for me.
Well I’m a mod_rewrite
idiot, so I usually just use the full URL instead then:
RewriteRule ^links.php?$ http://yoursite.com/links/ [QSA,L]
Okay I haven’t found an htaccess solution to this so what I am going to do is include a PHP script in the 404 template.
The script basically sees takes the URL of the 404, and if it matches a location in my redirects, it goes to the new location.
I hope to make this a plugin with a user interface so that others can benefit from it.
Thanks for your help.