【问题标题】:CMS: How to handle internal URLs best?CMS:如何最好地处理内部 URL?
【发布时间】:2013-06-19 18:18:22
【问题描述】:

我想什么可能是处理内部链接的最佳方式。

目前我只是将完整的 URL 粘贴到所见即所得编辑器中,并在内容插入数据库之前将其替换为占位符。

ROOT_URL = "http://localhost/projectname/";
$content = Helper::replace_all(ROOT_URL, "{{{ROOT_URL}}}", $content); // custom

在输出内容之前,占位符被当前的 ROOT_URL 替换。

$content = Helper::replace_all("{{{ROOT_URL}}}", ROOT_URL, $content); // custom

效果很好,但我想知道您的最佳做法。你会如何处理这个问题?

提前致谢!

【问题讨论】:

  • 预测绝对网址重命名的好主意! +1
  • 所见即所得的好方法。我在我的自定义 CMS 中使用了相同的方法。用户懒得正确处理 URL,只是从浏览器地址栏中复制/粘贴它们。并且您可以轻松地将您的网站迁移到不同的域名。
  • 取决于您的所见即所得编辑器的设置方式。如果用户链接到的页面的 URL 发生了变化,会发生什么情况?如果网站的域名发生变化会怎样?有很多不同的因素会决定您采用的解决方案。

标签: php database url replace


【解决方案1】:

我想到了几个选项:

  • 您可以为您的所见即所得编辑器构建一个自定义链接选择器,它将使用ROOT_URL 并将其直接插入到所见即所得编辑器中。 (我们在我工作的公司这样做)
  • 您可以在任何地方使用相对网址,并将您的ROOT_URL 输出到您网站上的<base> 标记中。 (这个技术有点争议,但我个人非常喜欢)
  • 您可以在开发时设置您的 HOSTS 文件以使用实际域名(因此更类似于生产环境)并使所有路径都简单地绝对。不像上述解决方案那样通用,但被更广泛地接受。
  • 像现在这样使用占位符。

我个人认为最好的解决方案肯定是第一个,因为第二、第三和第四个解决方案需要用户理解链接的构建方式。第一个解决方案的巨大缺点是,当域发生变化时,您的内容中有硬编码链接。或者,您也可以让自定义链接选择器插入一个占位符,这可能会更好。 (并保持其余相同)。第二种和第三种解决方案可能是最容易集成和实际使用的解决方案。

【讨论】:

  • 链接选择器和占位符都是很好的解决方案。链接选择器的风险是直接在该 cms 内链接的所见即所得中复制/粘贴。也许两者都做会很完美;)
猜你喜欢
  • 2020-10-03
  • 2013-06-13
  • 2014-01-28
  • 2021-06-16
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多