2013-04-21 62 views
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作为cid,第二个为bid,第三个为pid

完整的示例

不过,我也想它根据请求的子文件夹的数量,例如,服务于特定页面

地址请求:http://domain.com/shoes/prada/

网页中投放:http://domain.com/shop.php?cid=shoes&bid=prada

到目前为止,所有我设法找到是mod_rewrite基于正则表达式匹配,但我的路径的也会相差很多,这就是为什么我想基于访问的文件夹数量有条件(请注意,我用正则表达式不太好 - 我认为通配符会对此有所帮助,但我不确定从哪里开始)。

任何帮助,将不胜感激!这是相当长的啰嗦,所以如果你需要更多的信息澄清,请让我知道!

+0

@faa首届例子只是要表明我的问题(例如,从文件夹中取出参数)的基础上,而第二是展示基于参数的数量被服务的页面。通过“访问文件夹的数量”我的意思是传递参数的数量与想法1文件夹= 1参数,如so /路径/到/文件夹 - > 1 =路径,2 =到,3 =文件夹。 – Kemebear 2013-04-21 23:01:43

回答

7

随着工作的一点点,我能够调整一些正则表达式,并得到一个工作规则集为我想要的东西:

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/

+1

你可以“接受”你自己的回复。 – leticia 2013-07-23 13:17:53

相关问题