重命名后保留某些页面的链接
我正在使用 php、mysql 开发 CMS。
我将页面信息存储在mysql数据库中: table pages
columns(id
, title
, title_url
, published_time
, ... )
如果客户重命名某些页面的链接,最好的解决方案是什么? (title
和 title_url
重命名后发生变化)
示例:
链接到页面-> 主页/gold_news
客户将 gold_news
重命名为 gold_price_news
(现在数据库中的 title_url
为 gold_price_news
)
和旧链接到页面 -> homepage/gold_news
,它不再起作用了。
I am working on a CMS with php, mysql.
I store my page information in mysql database: table pages
columns(id
, title
, title_url
, published_time
, ... )
What is the best solution to maintain links to certain pages if a customer renames them? (title
and title_url
change after renaming)
Example:
link to page -> homepage/gold_news
Customer renames gold_news
to gold_price_news
(now title_url
in database is gold_price_news
)
and old link to page -> homepage/gold_news
, which doesn't work anymore.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在表中添加一个名为“redirectId”的新字段
,然后在表中使用新 url 创建一个新行(插入 id:999)
您将设置值redirectId = 999
,并在旧行中,当请求旧 url 时, ,使用 http 301 状态代码将它们重定向到新的 url
You you can add a new field in the table called "redirectId"
thenn create a new row in the table with the new url (inserted id:999)
and in the old row you will set the value redirectId=999
when old urls are requested, redirect them to the new url using the http 301 status code
我将使用 .htaccess (mod 重写)以及数据库中的 id 和 title 字段的组合。
首先,所有页面 URL/链接都应采用以下形式:
“pagetitle”是为了纯文本可读性而存在,没有任何用途(只是数据库中的标题值),而 id 是对页面的实际引用(数据库中该页面的 ID)。
当您使用 id 作为页面的锚定引用时,用户是否更改数据库中的页面标题/url 并不重要,因为记录的 id 是固定的。
然后,您的 .htaccess 应该包含:
其作用是获取上面指定类型的 URL(例如 yourdomain.com/page/1/my page/),并将该请求路由到加载内容的 php 脚本,例如 yourdomainpath/ pagehandler.php,将 id 作为 GET 变量“pageid”传递。
用户看到一个漂亮干净的 URL,.htaccess 然后在幕后“重定向”到您的脚本,该脚本从 URL 中取出 id 并获取链接到数据库中该 id 的内容。由于这是基于 id 的,因此用户可以拥有自由领域来更改数据库中其他字段的内容,而无需了解效果。一个漂亮、干净的解决方案。
I would use a combination of .htaccess (mod rewrite) and the id and title fields in your DB.
Firstly, all page URLs/links should be in the form:
With 'pagetitle' being there for plain text readability purposes and serving no purpose (merely being the title value from your DB), and the id being the actual reference to the page (the id for that page in your DB).
As you are using the id as an anchoring reference to the page, it doesnt matter if the user changes the page title/url in the DB, as the record's id is fixed.
Your .htaccess should then contain:
What this does is take a URL of the type specified above (e.g. yourdomain.com/page/1/my page/), and route that request to the php script which loads the content, e.g. yourdomainpath/pagehandler.php, passing the id as the GET variable 'pageid'.
The user sees a nice clean URL, which .htaccess then 'redirects' behind the scenes to your script, which takes the id out of the URL and gets the content linked to this id in your DB. As this is id based, users can have free realm to change other fields' content in the DB without any knowck on effect. A nice, clean solution.