Search code examples
apache.htaccessmod-rewrite

Should I escape these characters with a backslash in .htaccess?


I have this in my .htaccess:

RewriteRule ^(aa.bbb|aaa,bbb|aaa-bbb|aaa_bbb||)/(.*)$ /index.html [L,NC]

Will it be fine as above, or should it have escape characters? I know javascript often uses \ to escape characters. Like below:

RewriteRule ^(aa\.bbb|aaa,bbb|aaa-bbb|aaa_bbb)/(.*)$ /index.html [L,NC]

I need it for these characters: - _ , . all four of them.


Solution

    • From your rules only dot needs to be escaped (since that is special regex character)
    • Two || should be removed otherwise that can match empty string
    • You can use character class to greatly reduce your regex
    • Inside character class none of these character need to be escaped.

    You can use this rule:

    RewriteRule ^(aa[.,_-]bbb)/(.*)$ /index.html [L,NC]