В htaccess я хотел бы заменить подчеркивания на дефисы, а затем перенаправить пользователя на новый url

Я хотел бы перенаправить любой запрос, содержащий символы подчеркивания, на тот же 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;
}

Но, я бы предпочел не использовать php и вместо этого держать это в моем файле htaccess без необходимости повторять это первое rewriteRule снова и снова, чтобы предвидеть, сколько символов подчеркивания может быть в каждом url. Мысли? Есть ли такой способ сделать это без повторения инкрементированного rewriteRule?

----- редактировать -----

Мой текущий файл htaccess - это стандартный файл WordPress, который находится ниже:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
8
задан Schoffelman 4 October 2011 в 17:04
поделиться