Kem*_*ear 5 apache mod-rewrite
我想使用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]
Run Code Online (Sandbox Code Playgroud)
这与示例有点不同,但这是我首先想要的.
这允许重写最多四个文件夹的URL,每个文件夹的"名称"作为参数给出,并且每个额外的深度级别将URL重写为单独的资源,例如:
http://x.com/shoes/prada/2011-high-heels/ -> http://x.com/product.php?tid=shoes&sid=prada&eid=2011-high-heels
Run Code Online (Sandbox Code Playgroud)
在http://martinmelin.se/rewrite-rule-tester/上测试过