Iは、次のブロックを使用してこの問題を解決することができた:
location ~ /l/(.*)=(.*) {
rewrite ^([^=]*)=(.*)$ $scheme://$host$1-$2;
return 301;
}
これは、複数のキーと値のペアのセグメントがパスである場合でも動作するように見えた、EX:
domain.com/L /カラー=赤/サイズ=大/形状=ラウンド
UPDATE:
Iは、その場合にはここでmultip発見le-key-valueセグメントが存在し、301回のリダイレクトがあったため、Googleはこれを好まなかった。
だから私は一緒に行くことになった:
location ~ /l/(.*)=(.*) {
rewrite ^([^=]*)=([^=]*)=([^=]*)=([^=]*)=([^=]*)=([^=]*)=([^=]*)=([^=]*)=(.*)$ $scheme://$host$1-$2-$3-$4-$5-$6-$7-$8-$9 permanent;
rewrite ^([^=]*)=([^=]*)=([^=]*)=([^=]*)=([^=]*)=([^=]*)=([^=]*)=(.*)$ $scheme://$host$1-$2-$3-$4-$5-$6-$7-$8 permanent;
rewrite ^([^=]*)=([^=]*)=([^=]*)=([^=]*)=([^=]*)=([^=]*)=(.*)$ $scheme://$host$1-$2-$3-$4-$5-$6-$7 permanent;
rewrite ^([^=]*)=([^=]*)=([^=]*)=([^=]*)=([^=]*)=(.*)$ $scheme://$host$1-$2-$3-$4-$5-$6 permanent;
rewrite ^([^=]*)=([^=]*)=([^=]*)=([^=]*)=(.*)$ $scheme://$host$1-$2-$3-$4-$5 permanent;
rewrite ^([^=]*)=([^=]*)=([^=]*)=(.*)$ $scheme://$host$1-$2-$3-$4 permanent;
rewrite ^([^=]*)=([^=]*)=(.*)$ $scheme://$host$1-$2-$3 permanent;
rewrite ^([^=]*)=(.*)$ $scheme://$host$1-$2 permanent;
}
2S例(How to replace underscore to dash with Nginx)の減少の力が私のために動作しませんでした。
Nginxでダッシュするにはアンダースコアを置き換える方法(http://stackoverflow.com/questions/15912191/how-to-replace-underscore-to-dash-with-nginx) –
類似した、唯一のものそれは "="記号であり、他の場合に使用できるという点で問題があります。パラメタの前に "/ l /"パスがある場合にのみ書き直す必要があります。どうすればいいのか知っていますか? – Nathan
パスにはキーと値のセットのみが含まれていますか?セットの最大数は何ですか? 'キー'はキーワードか単なるプレースホルダですか? –