用多个get变量重写url

时间:2013-04-28 16:40:38

标签: php mod-rewrite url-rewriting

我有一个看起来像这样的网址 http://mysite.com/item/?food=1&drink=1&bar=1&name=Bomba

我想让它更友好,也许更安全,看起来像 http://mysite.com/item/Bomba

问题是有时饮料或酒吧不会成为网址的一部分,因此我不知道如何使用.htaccess。此外,我不知道如何为多个get变量制定规则,如果我可以在重写规则中使用条件(如果drink == true或类似的东西)。 而且我也不想使用帖子,因为我希望能够分享链接。

到目前为止,我做了类似的事情

mysite.com/item/1/Bomba.menu

和规则

选项+ FollowSymlinks
重写引擎 RewriteRule ^ item /(.+)/(.+)。菜单项/?food = $ 1& drink = $ 1& bar = $ 1& name = Bomba [nc]

但它只有在网址保持不变的情况下才有效。 感谢

2 个答案:

答案 0 :(得分:1)

所以最后我做了这个短链接http://mysite.com/item/1/D1/W1/Bomba,它带我到这里http://mysite.com/item/?food=1&drink=1&wine=1&name=Bomba 并将此规则添加到.htaccess文件中。

Options +FollowSymlinks  
RewriteEngine on  
RewriteRule ^item/(.+)/(D.)/(W.)/(B.+)/(.+) item/?food=$1&drink=$1&wine=$1&bar=$1&name=$5 [nc]
RewriteRule ^item/(.+)/(D.+)/(W.+)/(.+) item/?food=$1&drink=$1&wine=$1&name=$4 [nc]
RewriteRule ^item/(.+)/(D.+)/(B.+)/(.+) item/?food=$1&drink=$1&bar=$1&name=$4 [nc]
RewriteRule ^item/(.+)/(W.+)/(B.+)/(.+) item/?food=$1&wine=$1&bar=$1&name=$4 [nc]

我希望它会对某人有所帮助。 :)

答案 1 :(得分:0)

[编辑答案]

您需要将它们设置为键/值对,因为您无法判断它是饮品还是酒吧ID。

我能想到的另一种方式,看起来不那么优雅,就是为ID添加前缀,所以如果它是一个饮料ID,那么制作动态网址:

http://mysite.com/item/D1/B4

然后如果它以'D'为前缀,则它是一种饮料,'B'用于酒吧等

相关问题