- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这个问题已经被很多人打死了,但是大多数答案似乎都是针对一个非常具体的案例,只适合他们的需要,到目前为止我还没有找到合适的解决方案(至少,据我所知)。
我的问题是我试图让我的网站将 URL 参数从 ID 重定向到实际字符串。
例如:
www.example.com/?category=1
将显示为:
www.example.com/software
同时
www.example.com/?category=2
将显示为:
www.example.com/software/desktop
从我读到的内容来看,我应该正在研究 apache 重写映射,这就是我的困惑所在。我真的不想从平面 txt 文件加载,因为我'我想让它尽可能地动态化,而且我读到我可以让它从 php 文件中读取并从 MySQL 数据库中读取,这正是我想要的。
问题在于我真的不太确定实现这一目标的正确方法是什么。 RewriteMap文档仅在一定程度上涵盖了平面 .txt 文件,并没有用 MySQL 实现。
所以基本上我要问的是,是否有人可以解释如何实现我正在寻找的目标,或者至少为我指明正确的方向。遗憾的是,到目前为止,我发现的大多数线程都没有太大帮助,但我可能已经忽略了有用的线程。
如果有帮助,现在,我的 MySQL 数据被格式化为继承结构,如下所示:
ID | Title | Link | Parent
1 | Software | /Software/ | NULL
2 | Desktop Software | /Software/Desktop/ | 1
2 | Mobile Software | /Software/Mobile/ | 2
附言:我应该补充一点,我发现的大多数解决方案都以此为例:
RewriteMap examplemap prg:/path/to/file.php
RewriteRule (.*) ${examplemap:$1}
但它从不提供有关 file.php 中的内容以及它如何查询和返回值的信息。
编辑我应该提到我在共享托管服务器上,而不是我自己的私有(private)服务器上,因此我可能无法访问所有可能的选项
编辑 2只是为了清楚起见:我想做的是让访问“example.com/software”的用户被视为在“example.com/?category=1”上;基本上美化链接并使其更具可读性。唯一的问题是,我正在尝试从数据库中读取它
最佳答案
如果您无权访问服务器或虚拟主机配置,则无论如何都无法使用 RewriteMap
。 map 本身需要在服务器或虚拟主机配置中定义,而不是在 htaccess 文件中。但是 apache 2.4 可以选择使用 mod_dbd 来使用 SQL query to define a rewrite map .
如果您需要访问 MySQL,最好在 PHP 中完成所有这些操作,而不是使用 mod_rewrite。您将使用 mod_rewrite 路由到您的 php 文件,然后该文件将重定向。也许是这样的?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /file.php?link=$1 [L]
所以当有人请求 http://example.com/Software/Mobile/
时,请求被重写为:/file.php?link=Software/Mobile/
,您的 file.php 脚本将进行查找。
或者如果你的意思正好相反:
RewriteCond %{QUERY_STRING} category=([0-9]+)
RewriteRule ^$ /file.php?ID=%1 [L]
所以当有人请求 http://example.com/?category=2
时,请求被重写为:/file.php?ID=2
并且php 脚本执行查找。
关于php - 使用 rewritemap 和 mysql 重写 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15757497/
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我有一个 RewriteMap,如下所示: Guide 1 Mini-Guide 2 White Paper 3 我将它包含到 Apache via Rewrit
如何在 htaccess 文件中使用 RewriteMap 指令? 当我把它放在那里时,我收到“此处不允许使用 RewriteMap”错误。 我知道当把它放在 httpd.conf 或虚拟主机配置文件
继续此处的另一个讨论: MySQL + htaccess mod_rewrite? 我被要求提出另一个问题。 我将其添加到我的 httpd.conf 文件中: DBDriver mysql DBDPa
我正在创建一个简单的 IP 黑名单。每个请求都根据 IP 列表进行评估,并在必要时抛出 403。我决定在 Apache 端使用 mod_rewrite、它的 RewriteMap 和简单的 pytho
我已将 RewriteMap 配置为使用外部应用程序来重写入站 URL。效果很好。我现在关心的是线程和性能。有没有办法让外部应用程序处理多个请求?我们现在使用 RewriteLock,因此一次只有一个
有人知道可以将大型 (550KB) 重写文件拆分成较小部分的方法吗? 我们遇到的问题是旧站点有数千个需要映射的 url,但由于 250KB 的限制,我们无法映射它们。 我在想一些类似的事情:
我已经接管了一个相当繁重的 LAMP 应用程序的开发。最初的开发人员使用带有 RewriteMap 的 .htaccess 文件和 PHP 脚本来处理应用程序的某些条件。 具体来说,当客户端请求某些子
我一直在尝试在我的 htaccess 中使用 RewriteMap 指令进行简单的映射,但由于某种原因,我每次都收到错误 500。我的语法是.. 选项 +FollowSymLinks RewriteE
我的站点中有不止一张重写 map ,但似乎只有一张 map 有效。 Web.config 文件的相关 block 如下:
我有一个这种格式的 map 文件 233 Alabama/Phenix-City/Ridgebrook 237 Alabama/Ft.-Mitchell/Riverside-Estates 我有以下
我一直在使用 url rewrite 一段时间,我一直只使用规则,而且我总是能得到我需要的东西。里面还有rewritemap。重写规则和重写映射有什么区别? 重写规则不会将一个链接映射到另一个链接吗?
我如何使用两个基于 HTTP-Host 的不同 RewriteMaps 来实现类似下面的东西? www.myfoo.com/test 应该重写为 /foo/test.aspx 和 www.mybar.
我知道这个问题已经被很多人打死了,但是大多数答案似乎都是针对一个非常具体的案例,只适合他们的需要,到目前为止我还没有找到合适的解决方案(至少,据我所知)。 我的问题是我试图让我的网站将 URL 参数从
我正在尝试在我的小型网络应用程序上设置干净的 URL。现在 URL 看起来像: http://www.mysite.com/productinfo.php?product=19 我希望他们是: htt
[已解决:请参阅下面的解决方案。] 我在编写 RewriteMap 程序时遇到问题(使用 Python)。我有一个指向 Python 脚本的 RewriteMap 指令,该脚本确定请求的 URL 是否
这让我抓狂。我似乎无法让 RewriteMap 指令在 Windows 上为 php 脚本工作。这是我的 httpd.conf 文件中的相关片段: RewriteEngine on
我是一名优秀的程序员,十分优秀!