gpt4 book ai didi

Apache mod_rewrite 路径名作为查询参数?

转载 作者:行者123 更新时间:2023-12-04 17:51:02 27 4
gpt4 key购买 nike

我想使用 Apache 的 mod_rewrite为了能够将路径的每个文件夹作为特定的查询参数,例如考虑以下内容:

基本示例

请求的网址:http://domain.com/shoes/prada/image-1/
服务页面:http://domain.com/?cid=shoes&bid=prada&pid=image-1
在这种情况下,请求了 3 个子文件夹( /shoes//prada/ 然后 image-1 ),因此第一个子文件夹在实际页面中传递为 cid ,第二个为 bid第三个是 pid .

完整示例

但是,我也希望它根据请求的子文件夹数量提供特定页面,例如

请求的网址:http://domain.com/shoes/prada/
服务页面:http://domain.com/shop.php?cid=shoes&bid=prada
到目前为止,我设法找到的是基于正则表达式的匹配 mod_rewrite但是我的路径会有很大差异,这就是为什么我希望根据访问的文件夹数量设置条件(请注意,我不太擅长正则表达式 - 我认为通配符会对此有所帮助,但我不会不确定从哪里开始)。

对此的任何帮助将不胜感激!这很啰嗦,所以如果您需要更多信息来澄清,请告诉我!

最佳答案

通过一些工作,我能够调整一些正则表达式并获得我想要的工作规则集:

RewriteEngine on
RewriteRule ^(.*)/(.*)/(.*)/(.)?$ product.php?tid=$1&sid=$2&eid=$3 [L]
RewriteRule ^(.*)/(.*)/(.)?$ brand.php?tid=$1&sid=$2 [L]
RewriteRule ^(.*)/(.)?$ shop.php?tid=$1 [L]

这与示例略有不同,但这是我最初的意图。

这允许重写 url 的最多四个文件夹深度,每个文件夹的“名称”作为参数给出,每个额外的深度级别将 url 重写为单独的资源,例如:
http://x.com/shoes/prada/2011-high-heels/ -> http://x.com/product.php?tid=shoes&sid=prada&eid=2011-high-heels

http://martinmelin.se/rewrite-rule-tester/ 上测试

关于Apache mod_rewrite 路径名作为查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16136521/

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