【发布时间】:2014-07-19 20:33:18
【问题描述】:
我一直在思考如何管理数以千计的网页,这些网页会根据 MySQL 中的一组数据发生变化。
所以本质上,我有成千上万的“产品”,每一个都由数据库表中的一行表示。
我目前对通过 url 可查看的这些“产品”中的每一个进行分页的操作是将 .php 文件放在 url 位置,这样当用户访问 http://www.mydomain.com/some_random_product.php 时,他们会打开所有包含的许多 .php 文件之一以下:
<?php
$thisPageName = basename(__FILE__, ".php");
include '/out/of/root/allProducts.controller.php';
?>
所以基本上所有的事情都是将 url 名称交给另一个脚本,该脚本采用 url 名称,然后在数据库中搜索相应的“产品”,如果找到该产品,那么它会显示一个包含相关信息的产品页面,如果没有的话显示一个错误页面,指出无法找到该产品。
我现在想做的是更好的过程,这样我就不需要在服务器上创建数千个物理文件。尽管这是一项非常简单的任务,因为我有一个脚本来执行它,但不得不一直运行它只是一件痛苦的事情(我必须在本地执行它,因为它是一个资源猪,然后复制所有页面到服务器)。
可能只加载一个文件,该位置的所有 url 都会加载而不更改 url,因为我需要它来查找相关信息。
我想补充一点,运行域的服务器是一个我可以完全访问的 VPS,我知道 Apache mod_rewrite 模块可能在这里有用,但老实说,我什至不知道从哪里开始实现它背后的逻辑。
如果有人能提出更好的方法或任何可能相关的方法,我们将不胜感激,谢谢!
【问题讨论】:
-
您应该检查“动态页面”的含义。创建多个页面只是为了展示产品并不是最好的解决方案。而是创建一个基于产品 ID 生成内容的页面(例如
product.php?productId=12)。我相信您可以找到有关创建产品页面的教程或类似的示例。 -
@CullyLarson 这确实有道理,但就 SEO 而言,最好有
products.php?src=this_random_product与this_random_product.php之类的东西吗?我认为拥有一个独特的网址会是更好的选择,尽管我可以错了吗? -
您是否在问如何执行
products/longer-product-name之类的操作并将其指向一个脚本(例如您的product.php脚本),而longer-product-name可以通过$_GET['product_name']之类的方式访问? -
@CullyLarson 我目前拥有
products/seo+friendly+url.php。我想要products/seo+friendly+url.php,但没有物理页面,而只是重定向在products/中访问的每个url 以加载templates/page_template.php? -
我明白了。我在搜索“htaccess rewrite url get parameters”时发现了一些有用的参考资料。这个webmasters.stackexchange.com/questions/23190/… 和9lessons.info/2009/11/pretty-urls-with-htaccess-file.html