【发布时间】:2013-04-22 07:44:38
【问题描述】:
我有一个看起来像这样的网址 http://mysite.com/item/?food=1&drink=1&bar=1&name=Bomba
我想让它更友好,也许更安全,看起来像 http://mysite.com/item/Bomba
问题是有时drink 或bar 不会成为url 的一部分,所以我不知道如何使它与.htaccess 一起工作。此外,我不知道如何为多个 get 变量制定规则,以及是否可以在重写规则中使用条件(如果 drink==true 或类似的东西)。 而且我不想使用帖子,因为我希望能够分享链接。
到目前为止,我做了这样的事情
mysite.com/item/1/Bomba.menu
规则
选项 +FollowSymlinks
重写引擎开启
RewriteRule ^item/(.+)/(.+).menu item/?food=$1&drink=$1&bar=$1&name=Bomba [nc]
但它只有在 url 保持不变的情况下才有效。 谢谢
【问题讨论】:
-
您想从 GET 请求中删除变量然后共享链接吗?这是不可能的。如果您想从 GET url 中删除一些特定变量,那么您只需编辑代码以检查它们是否在 GET 请求中指定(并相应地执行)。发布一些代码,我们可能会有所帮助。
-
不,不,我不想删除变量。它是动态创建的链接,因此有时某些变量不会出现,例如某些链接将是mysite.com/item/?food=1&drink=1&bar=1&name=Bomba,其他的将是mysite.com/item/?food=1&bar=1&name=Pistol 等。
-
一种解决方案是将 url 段成对。所以mysite.com/item/?food=1&drink=1&bar=1&name=Bomba 会变成mysite.com/item/food/1/drink/1/bar/1/name/Bomba 或者这样做:mysite.com/item/Bomba?food=1&drink=1。使用 klein 之类的路由库,例如 (github.com/chriso/klein.php)
-
听起来您应该在 PHP 中构建自己的控制器,并将所有 URL 重定向到控制器。然后你可以做一些类似条件的事情,并在 URL 中使用任何你喜欢的词。
-
你能给我一些例子吗?谢谢:)
标签: php mod-rewrite url-rewriting