gpt4 book ai didi

.htaccess - htaccess 重写没有通用模式的 url

转载 作者:行者123 更新时间:2023-12-03 03:12:03 25 4
gpt4 key购买 nike

在一个新项目中,一个网站有一组静态 html 页面。所有者需要将它们转换为动态的。每个页面都有:一个文本部分、一张小照片以及一些与此页面相关的其他页面的链接。

所有这些我都可以放入数据库并创建动态页面(php)。

我的问题是每个静态页面都是唯一的 - url 中没有通用模式。目前有 860 个这样的页面。我可以有一个网址,例如:

folder1/folder2/item1.htm
folder1/folder2/folder3/item2.htm
folder1/folder2/folder2-fodler3/item3.htm

这 3 种是迄今为止最常见的模式(为 860 个网址中的大约 650 个提供服务)。

每个文件夹名称实际上是一个类别/子类别/关键字,我可以用它来确定我的项目的属性。作为一般规则,前 2 个文件夹(文件夹 1 和文件夹 2)是产品的类别和子类别,而接下来的文件夹(文件夹 3 及之后)确定项目的部分(如果有)。我希望这是有道理的。

因此,一种想法是使用旧的静态 url 作为数据库字段并匹配它来提供内容,例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /script.php?path=$1 [L]

我认为将此规则放在重写规则的最后将确保所有其他重写不受影响。

这种方法可取吗?或者还有其他方法吗?更坚固/安全/轻便的东西?

最佳答案

您描述的方法非常常见且很好:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /script.php?path=$1 [L]

你可以直接在PHP脚本中解析原始请求字符串,这样更直接。查看您的服务器在 $_SERVER PHP 超全局数组中提供的内容,例如运行var_dump($_SERVER);。您已经找到了与您正在使用的 $_GET['path'] 类似的东西,这通常更具互操作性:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /script.php [L]

接下来,根据 apache 服务器版本,可以进一步简化为:

FallbackResource /script.php

这使您无需在当前使用的 RewriteCond 中进行额外的文件检查。

关于.htaccess - htaccess 重写没有通用模式的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6223577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com