我已经看到了几个类似的问题并尝试了所有解决方案,但不知所措。我需要重定向
example.com/products.asp?lob=health
到
example.com/services/healthcare/
我需要为几个lob = 不同的值执行此操作。有没有办法可以重定向每个网址。也许在lob上做某种重写条件,但如果lob = health的值,则重定向到这里。如果它等于home,重定向到其他地方?
答案 0 :(得分:0)
不确定这是“正确”的方法,但它有效。
RewriteCond %{QUERY_STRING} ^lob=value1$ [NC]
RewriteRule ^products.asp$ http://example.org/sample/one/? [R=301,L]
然后换一个不同的值:
RewriteCond %{QUERY_STRING} ^lob=value2$ [NC]
RewriteRule ^products.asp$ http://example.org/sample/two/? [R=301,L]
然后对于与值不匹配的所有内容:
RewriteRule ^products\.asp$ [insert new url here] [R=301,L]
如果您只想将.asp网址重定向到.php,最后一个示例也可以使用。请记住,我有其他条件和规则正在删除.php扩展名并添加/到所有文件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
答案 1 :(得分:0)
如果仅查看查询字符串值然后重定向,请尝试...
Dim theVal, newURL
If Request("lob") <> "" Then
theValue = LCase(Request("lob"))
Else
theValue = "none"
End If
Select Case theValue
Case "health"
newURL = "example.com/services/healthcare/"
Case "law"
newURL = "example.com/services/legal/"
Case Else
newURL = "example.com/services/listing/"
End Select
Response.Redirect newURL
希望这有帮助。