我想在.htaccess
中制作一个复杂的重写规则,我有一个网址:
domain.com/?w={WHAT}&l={WHERE}&r={RADIUS}&f={FILTER}
我想重定向到以下网址结构:
如果w和l不为空
domain/{WHAT}-jobs-in-{WHERE}
如果w不为空且l为空
domain/{WHAT}-jobs
如果w为空且l不为空
domain/jobs-in-{WHERE}
如果还有其他参数,请将其放在表格的最后:
domain/{WHAT}-jobs-in-{WHERE}/?r={RADIUS}&f={FILTER}
答案 0 :(得分:0)
这3条规则应该起到作用:
RewriteEngine On
# if not domain.com then bail out
RewriteCond %{HTTP_HOST} !^(www\.)domain\.com$ [NC]
RewriteRule ^ - [L]
RewriteCond %{QUERY_STRING} ^w=([^&]+)&l=([^&]+)(?:&(.+))?$ [NC]
RewriteRule ^$ /%1-jobs-in-%2?%3 [L,NE,R=302]
RewriteCond %{QUERY_STRING} ^w=([^&]+)(?:&l=&)?(.*)$ [NC]
RewriteRule ^$ /%1-jobs?%2 [L,NE,R=302]
RewriteCond %{QUERY_STRING} ^(?:w=&)?l=([^&]+)(?:&(.+))?$ [NC]
RewriteRule ^$ /jobs-in-%1?%2 [L,NE,R=302]
# replace + by - recursively
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^+]*)\+(.*)$ /$1-$2 [L,R]