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