RewriteRule for long url with parameters /我如何美化它们?

时间:2011-04-14 18:18:56

标签: apache mod-rewrite url-rewriting apache2

我在过去几周里读到了关于RewriteRules的所有内容。 你是我的最后一招:D

我只是没有任何工作(是的,Rewrite Engine已启用且简单的工作正常)。

我的网站网址如下所示:

http://www.videospielkalender.de/?platform=wii&setfilter=1&dates=2

我想要一个像这样的结果

http://www.videospielkalender.de/wii/price/nextweek/

就是这样。 我希望这里的一些天才可以给我一个正确方向的推动。

谢谢大家 奥利弗

2 个答案:

答案 0 :(得分:3)

http://wiki.apache.org/httpd/RewriteQueryString上的最后一个食谱是开始的地方。在上面提到的特定情况下,您需要执行以下操作:

RewriteRule ^/?([^\]+)/([^\]+)/([^\]+)/? /?platform=$1&setfilter=$2&dates=$3

然而,这个解决方案存在两个相当明显的问题。他们是:

  1. 我们如何将“price”映射到“1”和“nextweek”到“2”?也许这是你的处理程序/脚本/任何需要变得足够聪明的事情

  2. 您的网站上的其他URI(图片,css,js等)也可能被此规则集捕获,这可能会破坏内容。

  3. 这两个条件都可以通过以下方式解决:

    1. 使脚本足够智能以处理参数 和
    2. 根本不要使用mod_rewrite。相反,使用:
    3. FallbackResource /index.php

      (或者调用任何根处理程序/脚本)并让该脚本/处理程序直接智能地操作PATH_INFO。

      请记住,mod_rewrite最重要的是知道何时避免它。

答案 1 :(得分:2)

您可以使用此通用规则将后一个URL路径重写为前一个:

RewriteRule ^/([^/]+)/([^/]+)/([^/]+)/$ /?platform=$1&setfilter=$2&dates=$3