Сохранять ссылки на определенные страницы после переименования - PullRequest
1 голос
/ 05 октября 2011

Я работаю на CMS с php, mysql.

Я храню информацию о моей странице в базе данных mysql: таблица pages столбцы (id, title, title_url, published_time, ...)

Как лучше всего сохранить ссылки на определенные страницы, если клиент переименует их?(title и title_url изменяются после переименования)

Пример:
ссылка на страницу -> homepage/gold_news
Клиент переименовывает gold_news в gold_price_news (теперь title_url в базе данныхis gold_price_news)
и старая ссылка на страницу -> homepage/gold_news, которая больше не работает.

Ответы [ 2 ]

1 голос
/ 05 октября 2011

Я бы использовал комбинацию .htaccess (mod rewrite) и полей id и title в вашей БД.

Во-первых, все URL-адреса страниц / ссылки должны быть в форме:

yourdomain.com/page/idnumber/pagetitle

При наличии «pagetitle» для удобства чтения простого текста и бесполезной цели (просто значение заголовка из вашей БД), а идентификатор является фактической ссылкой на страницу (идентификатор этой страницы в вашей БД).

Поскольку вы используете идентификатор в качестве привязки ссылки на страницу, не имеет значения, изменяет ли пользователь заголовок / URL страницы в БД, поскольку идентификатор записи фиксирован.

Ваш .htaccess должен содержать:

RewriteEngine On
RewriteRule ^page/(.*)/(.*)/?$ yourdomainpath/pagehandler.php?pageid==$1 [NC,L] 

Для этого нужно взять URL указанного выше типа (например, yourdomain.com/page/1/my page /) и направить этот запрос в скрипт php, который загружает контент, например, yourdomainpath / pagehandler.php, передавая идентификатор как переменную GET 'pageid'.

Пользователь видит красивый чистый URL-адрес, который затем .htaccess «перенаправляет» за кулисы к вашему сценарию, который извлекает идентификатор из URL-адреса и получает содержимое, связанное с этим идентификатором, в вашей БД. Так как это основано на идентификаторе, пользователи могут свободно изменять содержимое других полей в БД без какого-либо эффекта. Хорошее, чистое решение.

1 голос
/ 05 октября 2011

Вы можете добавить новое поле в таблицу под названием "redirectId"

затем создайте новую строку в таблице с новым URL-адресом (вставленный идентификатор: 999)

и в старой строке вы установите значение redirectId = 999

когда запрашиваются старые URL, перенаправьте их на новый URL, используя код состояния http 301

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...