【问题标题】:RewriteRule Conversion重写规则转换
【发布时间】:2013-04-23 10:03:43
【问题描述】:

我需要帮助,我正在将规则从 lighthttpd 重写为 apache httpd。虽然我以前从未使用过 lighthttpd。我希望有人可以帮助我重写这段代码。即使在 apache 中,我也对 Rule 系统有点失望,但还不错。

"^install/?$" => "install.php",

"^/doc/([a-z]+)/?$" => "doc.php?cat=$1",
"^/~([a-z.]+)/doc/([a-z]+)/?$" => "doc.php?project=$1&cat=$2",

"^/~([a-z.]+)/?$" => "index.php?project=$1",
"^/~([a-z.]+)/api/([a-z]+)/?$" => "index.php?project=$1&mode=$2",

"^/all/?$" => "list.php",
"^/api/([a-z]+)/all/?$" => "list.php?mode=$1",
"^/~([a-z.]+)/all/?$" => "list.php?project=$1",
"^/~([a-z.]+)/api/([a-z]+)/all/?$" => "list.php?project=$1&mode=$2",
"^/rss/?$" => "list.php?rss=1",
"^/~([a-z.]+)/rss/?$" => "list.php?project=$1&rss=1",
"^/all/([0-9]+)/?$" => "list.php?page=$1",
"^/api/([a-z]+)/all/([0-9]+)/?$" => "list.php?mode=$1&page=$2",
"^/~([a-z.]+)/all/([0-9]+)/?$" => "list.php?project=$1&page=$2",
"^/~([a-z.]+)/api/([a-z]+)/all/([0-9]+)/?$" => "list.php?project=$1&mode=$2&page=$3",

"^/([0-9]+)/?$" => "show.php?id=$1",
"^/~([a-z.]+)/([0-9]+)/?$" => "show.php?project=$1&id=$2",
"^/([0-9]+)/([a-z|A-Z]+)/?$" => "show.php?id=$1&mode=$2",
"^/~([a-z.]+)/([0-9]+)/([a-z|A-Z]+)/?$" => "show.php?project=$1&id=$2&mode=$3",
"^/api/([a-z|A-Z]+)/([0-9]+)/?$" => "show.php?mode=$1&id=$2",
"^/~([a-z.]+)/api/([a-z|A-Z]+)/([0-9]+)/?$" => "show.php?project=$1&mode=$2&id=$3",
"^/([0-9]+)/([0-9]+)/?$" => "show.php?id=$1&hash=$2",
"^/~([a-z.]+)/([0-9]+)/([0-9]+)/?$" => "show.php?project=$1&id=$2&hash=$3",
"^/([0-9]+)/([0-9]+)/([a-z|A-Z]+)/?$" =/> "show.php?id=$1&hash=$2&mode=$3",
"^/~([a-z.]+)/([0-9]+)/([0-9]+)/([a-z|A-Z]+)/?$" => "show.php?project=$1&id=$2&hash=$3&mode=$4",
"^/api/([a-z|A-Z]+)/([0-9]+)/([0-9]+)/?$" => "show.php?mode=$1&id=$2&hash=$3",
"^/~([a-z.]+)/api/([a-z|A-Z]+)/([0-9]+)/([0-9]+)/?$" => "show.php?project=$1&mode=$2&id=$3&hash=$4",
"^/api/([a-z|A-Z]+)/([0-9]+)/([0-9]+)/(.*)$" => "show.php?mode=$1&id=$2&hash=$3&password=$4",
"^/~([a-z.]+)/api/([a-z|A-Z]+)/([0-9]+)/([0-9]+)/(.*)$" => "show.php?project=$1&mode=$2&id=$3&hash=$4&password=$5"

我唯一转换的是第一行

RewriteRule ^install/.* install.php

【问题讨论】:

  • 是的,我熟悉正则表达式
  • 虽然我从未将正则表达式与 RewriteRule 一起使用。而且我也不是 lighthttpd 用户。所以我对他们的写作方式有点困惑。 url重写

标签: apache mod-rewrite


【解决方案1】:

所以

"^install/?$" => "install.php"

变成

RewriteRule ^install/?$ install.php [L]

"^/doc/([a-z]+)/?$" => "doc.php?cat=$1"

变成

RewriteRule ^doc/([a-z]+)/?$ doc.php?cat=$1 [L]

"^/~([a-z.]+)/doc/([a-z]+)/?$" => "doc.php?project=$1&cat=$2",

变成

RewriteRule ^~([a-z.]+)/doc/([a-z]+)/?$ doc.php?project=$1&cat=$2 [L]

"^/~([a-z.]+)/?$" => "index.php?project=$1",

变成

RewriteRule ^~([a-z.]+)/?$ index.php?project=$1 [L]

等等。

【讨论】:

  • 我可以试试这个。可能需要一段时间
  • 我觉得第二个RewriteRule有错别字(见引号)。
  • 对不起。我试图遵循你所做的,但是。其中一些不起作用这是不起作用的列表。你能给我一个格式吗? pastebin.com/cbgV0Lc7
猜你喜欢
  • 2014-06-30
  • 2016-08-09
  • 1970-01-01
  • 2012-02-27
  • 2012-07-12
  • 2013-08-09
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
相关资源
最近更新 更多