2

次の方法でアンダースコアをダッシュ​​に正常に書き換えることができますが、特定のディレクトリでのみ機能するコードが必要であり、その部分を機能させることができません。

作品:

RewriteRule ^([^_]*)_([^_]*)_(.*)$ /$1-$2-$3 [R=301,L]
RewriteRule ^([^_]*)_(.*)$ /$1-$2 [R=301,L]

動作しません:

RewriteRule ^/media/entry/([^_]*)_([^_]*)_(.*)$ /media/entry/$1-$2-$3 [E=unscors:Yes]
RewriteRule ^/media/entry/([^_]*)_(.*)$ /media/entry/$1-$2 [E=unscors:Yes]
RewriteCond %{ENV:unscors} ^Yes$
RewriteRule ^/media/entry/(.*)$ http://domain.com/media/entry/$1 [R=301,L]
4

1 に答える 1

1

パターン/からすべての先頭を削除すると、すべてが正常に機能するはずです(最初の2つの例のように機能します)。RewriteRule

次のコード:

RewriteRule ^media/entry/([^_]*)_([^_]*)_(.*)$ /media/entry/$1-$2-$3 [E=unscors:Yes]
RewriteRule ^media/entry/([^_]*)_(.*)$ /media/entry/$1-$2 [E=unscors:Yes]
RewriteCond %{ENV:unscors} ^Yes$
RewriteRule ^media/entry/(.*)$ http://domain.com/media/entry/$1 [R=301,L]

設定を確認するのに役立つオンラインのhtaccessテスターもあります。

オンラインhtaccessテスター

%{REQUEST_FILENAME}ツールにはいくつかの制限がありますが、つまり、現在、またはのような特定の機能は実装されていません%{ENV:...}が、単純なルールの場合は問題ありません。

それがお役に立てば幸いです。

于 2013-02-10T12:59:51.117 に答える