I am using mod_rewrite for search engine friendly URLs. I have this line that works great:
RewriteRule ^Pay ./pay.php [L] #Pay
but I would like to also have a match if a visitor types http://example.com/pay
(note the lowercase). I have tried using NC
but I get a 500 error. I have tried making 2 separate rules one uppercase and one lowercase, but again 500 error.
Can this be done on one line using a regular expression? Something like:
RewriteRule ^([P-p])ay ./pay.php [L] #Pay
If so what is the proper way? If not how could I accomplish this without using mod_spelling?
Best Answer
You get a 500 error because of an endless rewrite loop. If you simply make the above case-insensitive then the rewritten URL ie.
/pay.php
matches the now case-insensitive pattern^Pay
etc. etc.In this case, you can simply make your pattern more restrictive and match just "pay", not any URL-path that simply starts "pay". For example:
I've also removed the
./
prefix on the susbstitution, this is not required. Also, Apache does not support line-end comments.Be aware, however, that in making this rewrite case-insensitive it potentially results in duplicate content.