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の書き換えがどのように機能するかを理解するのは難しいと思います。

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 に答える