アンダースコアを含むリクエストはすべて同じURLにリダイレクトしたいのですが、ハイフンで置き換えてください。htaccessでは、アンダースコアをハイフンに置き換えて、ユーザーに新しいURLをリダイレクトしたいとします。
は(無数に本のRewriteRuleまでの増分バージョンを繰り返します)
rewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ http://example.com/$1-$2-$3-$4 [R=301,L]
rewriteRule ^([^_]*)_([^_]*)_(.*)$ http://example.com/$1-$2-$3 [R=301,L]
rewriteRule ^([^_]*)_(.*)$ http://example.com/$1-$2 [R=301,L]
PHPで私の現在のソリューションがある(正常に動作します):私は、フォーラムの多くは、私はこのような何かを示唆見てきました:
if(preg_match('/[_]+/', $_SERVER['REQUEST_URI'])){
$redirectUrl = preg_replace('/[_]+/','-', $_SERVER['REQUEST_URI']);
header('Location: '. $redirectUrl , TRUE, 301);
return;
}
しかし、私はむしろ代わりに、各URLがあるかもしれないどのように多くのアンダー予想するために、何度も何度もその最初のRewriteRuleを繰り返すことなく、私のhtaccessファイルに保管してくださいPHP &を使用していないと思います。思考?増分されたrewriteRuleを繰り返すことなくこれを行う方法はありますか?
----- -----編集
私の現在のhtaccessファイルは、以下の通りですちょうど標準のWordPress 1、次のとおりです。組み合わせについて2.持っているか
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
これが私の唯一の方法でありますそれが動作するかどうかを確認するには、mod rewriteでReplacesを使用せず、一致したパターンのルールのみを書き換えます。 –