0

我想在我的 中制定一个复杂的重写规则.htaccess,我有 URL:

domain.com/?w={WHAT}&l={WHERE}&r={RADIUS}&f={FILTER}

我想重定向到以下 URL 结构:

  1. 如果 w 和 l 不为空

    domain/{WHAT}-jobs-in-{WHERE}
    
  2. 如果 w 不为空且 l 为空

    domain/{WHAT}-jobs
    
  3. 如果 w 为空且 l 不为空

    domain/jobs-in-{WHERE}
    
  4. 如果还有其他参数,则将它们放在表格的末尾:

    domain/{WHAT}-jobs-in-{WHERE}/?r={RADIUS}&f={FILTER}
    
4

1 回答 1

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]
于 2013-10-13T09:52:59.097 回答