ЧПУ на самописном движке

S
На сайте с 07.03.2013
Offline
19
644

Добрый вечер, хочу поинтересоваться как настроить htaccess файл для такого вида ЧПУ:

site.ru/1-name.html

Сейчас, если зайти по новому адресу, то он будет работать, но и по старому тоже.

Мне нужна переадресация со старого URLa на новый. Вот что я пробовал:

RewriteEngine on

RewriteCond %{REQUEST_URI} ^do=news&id=([0-9]+)&name=(.*)$

RewriteRule ^index\.php$ /%1-%2.html? [L,R=301]

RewriteRule ^([0-9]+)-(.*).html$ index.php?do=news&id=$1&name=$2 [L]

Помогите разобраться, пожалуйста. :(

R
На сайте с 18.12.2009
Offline
92
#1

В случае с организацией на одном только .htaccess, у Вас должна быть какая-то общая черта, чтобы задать логику переезда со старых адресов на новые.

Почему бы не организовать ЧПУ средствами, например, php (или на чем у Вас там движок)?

Создаете новую таблицу в базе, храните там старые адреса и их новые ЧПУ.

При обращении к сайту смотрите URL ($_SERVER['REQUEST_URI']) и если он имеется в базе старых адресов - делаете 301 редирект на новый адрес.

S
На сайте с 07.03.2013
Offline
19
#2
rerighter:
В случае с организацией на одном только .htaccess, у Вас должна быть какая-то общая черта, чтобы задать логику переезда со старых адресов на новые.
Почему бы не организовать ЧПУ средствами, например, php (или на чем у Вас там движок)?
Создаете новую таблицу в базе, храните там старые адреса и их новые ЧПУ.
При обращении к сайту смотрите URL ($_SERVER['REQUEST_URI']) и если он имеется в базе старых адресов - делаете 301 редирект на новый адрес.

Не хотелось бы использовать такой способ. Это +1 запрос к БД. Как, например, это реализовано в DLE и других CMS?

дани мапов
На сайте с 06.09.2012
Offline
204
#3
Sleeky:
Не хотелось бы использовать такой способ. Это +1 запрос к БД. Как, например, это реализовано в DLE и других CMS?

Там такого нет.

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
S
На сайте с 07.03.2013
Offline
19
#4

	

$real_url = $_SERVER['REQUEST_URI'];
$search = preg_replace('#do=news&id=(.*)&name=(.*)#ies', 'headers("$1", "$2")', $real_url,-1,$count);
if($count != '0') {
header("Location: ".$row['id']."-".$row['name'].".html");
}

Такой код сойдет?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий