以书签为例的人
http://www.dogs.bark/breeds.cfm/12700_female_rottweiler.htm
或
http://www.dogs.bark/whatevertext/12700_female_rottweiler.htm
(use female + rottweiler)
指示:
http://www.dogs.bark/search/result/?q=female+rottweiler
所以基本上它应该采用以下划线分隔的最后一个词(可以是多个)作为关键词
我知道这应该使用mod.rewrite来完成,但就是这样。我发现很难理解mod重写是如何工作的。
答案 0 :(得分:1)
您可以使用mod_alias执行此操作:
RedirectMatch 301 ^/.*?/[0-9]+_(.*)\.html?$ /search/result/?q=$1
如果您不想将其作为永久重定向,请删除301
。你也可以使用mod_rewrite,它看起来几乎一样:
RewriteRule ^/?.*?/[0-9]+_(.*)\.html?$ /search/result/?q=$1 [L,R=301]
同样,如果您不想进行永久重定向,可以删除=301
位。
编辑:
为了用_
字符替换查询字符串的+
字符,您肯定需要坚持使用mod_rewrite并需要一些额外的规则:
# perform the initial rewrite, but don't redirect
RewriteRule ^/?.*?/[0-9]+_(.*)\.html?$ /search/result/?q=$1 [L]
# replace "_" with "+"
RewriteCond %{QUERY_STRING} ^q=([^_]*)_(.*)$
RewriteRule ^/?search/result/$ /search/result/?q=%1+%2 [L,NE]
# don't redirect until all "_" is replaced with "+"
RewriteCond %{QUERY_STRING} ^q=([^_]+)$
RewriteRule ^/?search/result/$ /search/result?q=%1 [L,R=301]