我一直在思考如何管理基于MySQL中的一组数据而变化的数千个网页。
所以从本质上讲,我有成千上万的产品和#34;每个都由数据库表中的一行表示。
我目前正在做什么来分析这些"产品"通过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名称的脚本然后在数据库中搜索相应的&#34;产品&#34;,如果它找到了产品,那么它会显示一个带有相关的产品页面信息,如果没有,则显示错误页面,指出无法找到产品。
我现在想做的是,这个过程更好,这样我就不需要在服务器上创建数千个物理文件了。尽管这是一个非常简单的任务,因为我有一个脚本来执行它,但是只需要一直运行该东西就会变得很麻烦(我必须在本地执行它,因为它是资源占用,然后复制所有页面到服务器)。
可能只是一个文件,该位置的所有网址都会加载而不会更改网址,因为我需要它来查找相关信息。
我想补充一点,运行域的服务器是我完全可以访问的VPS,我知道Apache mod_rewrite模块可能在这里有用,但老实说我不知道从哪里开始就是实施这一目标背后的逻辑。
如果有人可以提出更好的方法来做这个或任何可能相关的事情,那么非常感谢,谢谢!
答案 0 :(得分:3)
在URL中传递产品ID,并使用$_GET[productId]
在PHP脚本中捕获它。
然后,您应该查询数据库以获取与该ID匹配的产品行,并显示该产品的数据。
为了使这个案例的网址漂亮并保持SEO友好:
#.htaccess
RewriteEngine On
RewriteRule ^product/([0-9]+)/(.*)$ /product/product.php?productId=$1&name=$2
# URL:
<a href="/product/product.php?productId=123&name=product-one">
Product one
</a>
<!-- OR (Because of the URL rewriting) -->
<a href="/product/123/product-one">
Product one
</a>
# PHP Script
$id = $_GET[productId];
$sql = "SELECT *
FROM `product`
WHERE `id` = ?;";
etc...
通过这种方式,您可以在一个简单的PHP页面上显示数千种不同的内容。
答案 1 :(得分:0)
看起来你在这里有几个问题。
首先,您需要构建一个动态页面,该页面从数据库中检索产品信息,并根据通过查询字符串/ GET参数传递给页面的唯一标识符显示该信息。
php.net中PHP的GET参数用法示例:
<?php
echo 'Hello ' . $_GET["name"] . '!';
?>
假设用户输入http://example.com/?name=Hannes
上面的例子将输出类似于:
你好Hannes!
其次,您希望使用mod_rewrite来访问漂亮的URL,即:
example.com/products/some_random_product
vs example.com/products.php?id=some_random_product
。
示例Apache mod_rewrite条件实现此目的:
RewriteEngine on
RewriteRule ^products/([^/.]+)/?$ products.php?id=$1 [L]
根据您提出的问题,我建议您对mod_rewrite
,$_GET
进行一些研究,一般情况下使用PHP创建动态网页。
编辑SEO:
假设您使用mod_rewrite,SEO应该没有区别。客户端无法确定您是否真的显示products.php
而不是/products/some_random_product
。 mod_rewrite完全是服务器端,它与向客户端发送响应完全不同,告诉他们页面已经移动了。