重命名后保留某些页面的链接

发布于 2024-12-08 12:38:47 字数 518 浏览 0 评论 0原文

我正在使用 php、mysql 开发 CMS。

我将页面信息存储在mysql数据库中: table pages columns(id, title, title_url, published_time, ... )

如果客户重命名某些页面的链接,最好的解决方案是什么? (titletitle_url 重命名后发生变化)

示例:
链接到页面-> 主页/gold_news
客户将 gold_news 重命名为 gold_price_news(现在数据库中的 title_urlgold_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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泅人 2024-12-15 12:38:47

您可以在表中添加一个名为“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

陌生 2024-12-15 12:38:47

我将使用 .htaccess (mod 重写)以及数据库中的 id 和 title 字段的组合。

首先,所有页面 URL/链接都应采用以下形式:

yourdomain.com/page/idnumber/pagetitle

“pagetitle”是为了纯文本可读性而存在,没有任何用途(只是数据库中的标题值),而 id 是对页面的实际引用(数据库中该页面的 ID)。

当您使用 id 作为页面的锚定引用时,用户是否更改数据库中的页面标题/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 的,因此用户可以拥有自由领域来更改数据库中其他字段的内容,而无需了解效果。一个漂亮、干净的解决方案。

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:

yourdomain.com/page/idnumber/pagetitle

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:

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文