我正在使用php,mysql进行CMS。
我将页面信息存储在mysql数据库中:表pages
列(id
,title
,title_url
,published_time
,...)
如果客户重命名某些网页,维护指向某些网页的链接的最佳解决方案是什么? (重命名后title
和title_url
更改)
例:
链接到页面 - > homepage/gold_news
客户将gold_news
重命名为gold_price_news
(现在数据库中的title_url
为gold_price_news
)
和页面的旧链接 - > homepage/gold_news
,不再适用。
答案 0 :(得分:1)
您可以在名为“redirectId”的表格中添加新字段
然后使用新网址(插入ID:999)
在表格中创建一个新行并在旧行中设置值redirectId = 999
请求旧网址时,使用http 301状态代码
将其重定向到新网址答案 1 :(得分:1)
我会使用.htaccess(mod rewrite)和数据库中的id和title字段的组合。
首先,所有网页网址/链接都应采用以下格式:
yourdomain.com/page/idnumber/pagetitle
“pagetitle”用于纯文本可读性目的并且没有用处(仅仅是数据库中的标题值),而id是对页面的实际引用(数据库中该页面的id)。
当您使用id作为页面的锚定引用时,如果用户更改了DB中的页面标题/ url,则无关紧要,因为记录的id已修复。
你的.htaccess应该包含:
RewriteEngine On
RewriteRule ^page/(.*)/(.*)/?$ yourdomainpath/pagehandler.php?pageid==$1 [NC,L]
这样做是采用上面指定类型的URL(例如yourdomain.com/page/1/my page /),并将该请求路由到加载内容的php脚本,例如: yourdomainpath / pagehandler.php,将id作为GET变量'pageid'传递。
用户会看到一个漂亮干净的URL,然后.htaccess会在幕后“重定向”到您的脚本,该脚本会从URL中取出ID,并在您的数据库中获取与此ID相关联的内容。由于这是基于id的,因此用户可以拥有自由领域来更改数据库中的其他字段内容,而不会产生任何影响。一个不错的,干净的解决方案。