Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
电子通信网站PHP中产品的唯一URL_Php - Fatal编程技术网

电子通信网站PHP中产品的唯一URL

电子通信网站PHP中产品的唯一URL,php,Php,我不确定这是否是一个愚蠢的问题,但我正在创建一个电子通信网站,我希望尽可能做到专业和安全 为了便于访问,我希望每个产品都有自己独特的url,但我不确定如何做到这一点,因为现在我正在使用GET变量动态创建独特的页面 看起来是这样的: example.com/product?product=1 正如您所看到的,这不是一种非常容易分离产品的方法(使用唯一ID),而且在与数据库一起使用时也不太安全 我希望独特的url是什么样的: example.com/products/unique-product-

我不确定这是否是一个愚蠢的问题,但我正在创建一个电子通信网站,我希望尽可能做到专业和安全

为了便于访问,我希望每个产品都有自己独特的url,但我不确定如何做到这一点,因为现在我正在使用GET变量动态创建独特的页面

看起来是这样的:

example.com/product?product=1
正如您所看到的,这不是一种非常容易分离产品的方法(使用唯一ID),而且在与数据库一起使用时也不太安全

我希望独特的url是什么样的:

example.com/products/unique-product-name
我希望能够像这样使用url,同时保持php对数据库使用的简单性


如何快速简便地完成此操作,而不必为每个产品创建单独的页面???

首先,您需要为数据库中的每个产品创建一个唯一的别名字段,以便您可以通过以下方法访问您的产品:

example.com/product?product=1
www.example.com/product.php?alias=YOUR-alias

然后您可以使用mod_rewrite将
www.example.com/products/YOUR-ALIAS
映射到上述链接

为此,必须创建名为
.htaccess
(注意:没有文件扩展名,文件全名为
.htaccess
)的文本文件,其中包含以下规则:

RewriteEngine on
RewriteRule ^products/(.+)$  /product.php?alias=$1 [L]

然后,您必须将
.htaccess
product.php
文件上载到服务器的根目录中。

首先,您需要为数据库中的每个产品提供一个唯一的别名字段,以便您可以通过以下方法访问产品:

example.com/product?product=1
www.example.com/product.php?alias=YOUR-alias

然后您可以使用mod_rewrite将
www.example.com/products/YOUR-ALIAS
映射到上述链接

为此,必须创建名为
.htaccess
(注意:没有文件扩展名,文件全名为
.htaccess
)的文本文件,其中包含以下规则:

RewriteEngine on
RewriteRule ^products/(.+)$  /product.php?alias=$1 [L]

然后,您必须将
.htaccess
product.php
文件上载到服务器的根目录中。

我解决了这个问题,并在我的所有3台测试服务器上使用了相同的实例。为了让其中两个起作用,我只需从chiwangc的答案中去掉最前面的斜杠:

RewriteEngine on
RewriteRule ^products/(.+)$  product.php?alias=$1 [L]

我不能100%确定为什么只有部分时间会出现这种情况。

我解决了这个问题,并让同一个实例在我的所有3台测试服务器上运行。为了让其中两个起作用,我只需从chiwangc的答案中去掉最前面的斜杠:

RewriteEngine on
RewriteRule ^products/(.+)$  product.php?alias=$1 [L]

我不能百分之百地确定为什么只有部分时间是这样。

我已经为这种类型的许多项目工作过。 请添加您的
.htaccess
文件

RewriteEngine on
RewriteRule  ^products/([A-Za-z0-9-]+)/?$    products.php?alias=$1    [NC,L] 
像这样使用锚定标签

<a href"products/<?php echo $variable['alias']; ?>">product name</a>

我已经参与过很多类似的项目。 请添加您的
.htaccess
文件

RewriteEngine on
RewriteRule  ^products/([A-Za-z0-9-]+)/?$    products.php?alias=$1    [NC,L] 
像这样使用锚定标签

<a href"products/<?php echo $variable['alias']; ?>">product name</a>


使用URL重写。你用的是什么服务器?阿帕奇?您还必须为产品创建唯一的slug(产品名
unique
things)。@SverriM.Olsen我正在使用Apache,是的。下面是Apache的一个示例。ShrashingMagazine是URL重写的一个很好的介绍。您还可以在Google中搜索类似“”的内容。请使用URL重写。你用的是什么服务器?阿帕奇?您还必须为产品创建唯一的slug(产品名
unique
things)。@SverriM.Olsen我正在使用Apache,是的。下面是Apache的一个示例。ShrashingMagazine是URL重写的一个很好的介绍。你也可以在谷歌上搜索类似“”的东西。这似乎对我不起作用。我知道这些文件能够通信,因为我能够使用重写来消除文件扩展名。我不明白可能是什么问题。请查看Apache的日志文件,在访问
www.example.com/products/your-PRODUCT
时会得到什么HTTP状态码?找不到对象!在此服务器上找不到请求的URL。如果您手动输入URL,请检查拼写并重试。如果您认为这是服务器错误,请联系网站管理员。错误404是否在服务器的根目录下
product.php
?如果是这样,很可能是
mod_rewrite
不起作用,并且您的服务器在
www.example.com/products/your-PRODUCT
上找不到什么东西。如果是这种情况,请上传一个新的
.htaccess
文件,其中只包含我答案中的两行规则,以确认
mod_rewrite
是否正常工作,还有一个
product.php
文件到服务器的根目录。有趣的是,我在3台运行apache的服务器上测试了同一个实例,得到了3个完全不同的结果。在其中一台服务器上,它可以正常工作,而另两台服务器则不能正常工作,但它们会输出不同的错误。一个输出我之前向您显示的错误,另一个识别我正在查找的文件,但不知何故认为它不存在?这是一件奇怪的事,我觉得这不管用。我知道这些文件能够通信,因为我能够使用重写来消除文件扩展名。我不明白可能是什么问题。请查看Apache的日志文件,在访问
www.example.com/products/your-PRODUCT
时会得到什么HTTP状态码?找不到对象!在此服务器上找不到请求的URL。如果您手动输入URL,请检查拼写并重试。如果您认为这是服务器错误,请联系网站管理员。错误404是否在服务器的根目录下
product.php
?如果是这样,很可能是
mod_rewrite
不起作用,并且您的服务器在
www.example.com/products/your-PRODUCT
上找不到什么东西。如果是这种情况,请通过上传新的
.htaccessmod_rewrite
是否正常工作