@sergt2007

Как заменить пробелы на тире в htaccess?

URL-ы страниц сайта содержали пробелы. По требованию SEO-шников, пробелы заменил на тире. Таких страниц более 2000. Теперь мне надо написать Redirect 301 для этих страниц. Пробовал сделать замену через программу PHP. Получилось для страниц:

xxx.com/cassette_conditioners/DAIKIN_FCQN100EXV%20RQ100DXY.php

RewriteRule ^cassette_conditioners/(.*)([\s])(.*) xxx.com/notprob.php?new_url=$1$2$3

<?php
//notprob.php
$url=$_GET['new_url'];
$n=strpos($url,'_')+1;
$firm=substr($url,0,$n);
$nam=substr($url,$n);
$tab_from[]=' - ';
$tab_from[]='- ';
$tab_from[]=' -';
$tab_from[]=' ';
$tab_from[]='_';
$tab_to[]='-';
$tab_to[]='-';
$tab_to[]='-';
$tab_to[]='-';
$tab_to[]='-';
$nam=str_replace($tab_from,$tab_to,$nam);
$url= "xxx.com/cassette_conditioners/".$firm.$nam;
header("HTTP/1.1 301 Moved Permanently");
header('Location: '. $url, true, 301);
exit();
?>

Но для страниц:
xxx.com/cassette_conditioners/Cooper&Hunter_GKH36K3BI%20GUHN36NM1AO.php
не работает, мешает & в марке Cooper&Hunter.
Как в редиректе убрать &,
или есть более простой способ решить эту проблему?
  • Вопрос задан
  • 4012 просмотров
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
У вас какой то странный код, не могу понять зачем там firm, nam.

Я сделал вот так, работает
.htaccess
AddDefaultCharset UTF-8
RewriteEngine On
RewriteRule ^cassette_conditioners/([^\s]+\s.+)$ redirect.php?new_url=$1 [QSA,L]


php
$url=$_SERVER['REQUEST_URI'];
$tab_from = array ('%20','_');
$url='http://xxx.com'.str_replace($tab_from,'-',$url);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Вам нужно использовать RewriteCond перед RewriteRule и проверять наличие пробела. Что-то типа этого. И тогда уже либо перенаправлять на свой скрипт, который будет редиректить на нужный урл, либо как-то переделать url в самом апаче (тут не подскажу, но наверное можно).
RewriteCond %{REQUEST_URI} %20
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 14:02
5000 руб./за проект
24 апр. 2024, в 13:45
15000 руб./за проект
24 апр. 2024, в 13:32
300 руб./за проект