Reputation: 545975
I need to set up some RewriteRules to redirect a URL which has a space in it. I've tried this:
RewriteRule ^article/with%20spaces.html$ /article/without_spaces.html [R=301,L]
... but it doesn't work. Putting in a space instead of %20 causes a 500 Internal Server Error. How do I add a space?
Upvotes: 37
Views: 33180
Reputation: 141
If you want to avoid the complexity of escaping each space (e.g. if you plan to have this file automatically generated), you can simply use quotes:
RewriteRule "^article/with spaces.html$" /article/without_spaces.html [R=301,L]
Furthermore, these quotes can be used to encase any one expected argument:
RewriteRule "^article/with spaces.html$" "/article/without_spaces.html" [R=301,L]
Upvotes: 14
Reputation: 91
RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]
The first option replaces a space while the second replaces hard coded %20 in the url.
Upvotes: 9
Reputation: 26574
You can just escape the space with a \
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
Upvotes: 13
Reputation: 4578
Try putting a \ in front of your space to escape it.
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
Upvotes: 60
Reputation: 545975
Ah, I've found a solution: use the regex style to show a space:
RewriteRule ^article/with\sspaces.html$ ...
Though, I suspect that this would match all the other whitespace characters too (tabs, etc), but I don't think it's going to be much of a problem.
Upvotes: 1