1

例如,已添加书签的人

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 rewrite 是如何工作的。

4

1 回答 1

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]
于 2012-12-19T21:57:55.560 回答