djmzfKnm
djmzfKnm

Reputation: 27195

How to handle special characters in .htaccess rules?

In my .htaccess file I have defined following rule,

RewriteRule t/([^.]+)/$ /videos/tag.php?tag=$1 [QSA]

The above rule works fine if I am browsing http://example.com/videos/t/world+news/ or http://example.com/videos/t/events/

but when I am browsing http://example.com/videos/t/business+%26+world/ (here original tag is: business & world) then in my query string tag variable I am getting only business. '& world' is not coming when I am fetching variable data through $_GET['tag']

Can anyone please tell where is the problem in the above rule??

Upvotes: 1

Views: 4804

Answers (2)

Shahzaib Chadhar
Shahzaib Chadhar

Reputation: 327

Finally i have a solution for you:

RewriteRule ^t/([^/.]+)/$ /videos/tag.php?tag=$1 [QSA,L]

Upvotes: 0

Gumbo
Gumbo

Reputation: 655795

Try the B flag to escape the backreference:

RewriteRule ^t/([^.]+)/$ /videos/tag.php?tag=$1 [B,QSA]

Edit   How about this:

RewriteRule ^([^&]*)&(.*)/$ $1\%26$2 [N,NE]
RewriteRule ^t/([^.]+)/$ /videos/tag.php?tag=$1 [QSA]

The first rule is to replace the & with %26.

Upvotes: 5

Related Questions