1

我在这里超出了我的深度,目前正在阅读教程并使用 python 来学习正则表达式。

我有一个网站,其中一个 php 文件http://www.example.com/showme.php?user=JOHN将加载 JOHN 的访问者页面。但是,我想让约翰拥有自己的虚荣 URL,例如 john.example.com 并将其重写为http://www.example.com/showme.php?user=JOHN

我知道它可以完成,在摆弄它之后,似乎 lighttpd mod_rewrite 是要走的路。现在我很困惑,因为我试图想出正则表达式来匹配!

rewrite ("^![www]\.example\.com" => "www\.example\.com\?user=###");

我正在使用 python re 模块来测试从 john.example.com 获取 john 的几种方法,并识别 url 的第一段何时不是 www,然后重定向。以上是我的试验。我是不是在正确的大陆!

任何帮助将不胜感激

  1. 识别第一个之前的 url 的第一部分何时.不是www并且是别的东西 - 这样 example.com 就不会难倒它。
  2. 在 first 之前获取 url 的第一部分.并将其标记为user=###

谢谢一堆

4

1 回答 1

0

使用 lighttpd 的 mod-rewrite 模块。将此添加到您的lighttpd.conf文件中:

$HTTP["host"] != "www.example.com" {
    $HTTP["host"] =~ "^([^.]+)\.example\.com$" {
        url.rewrite-once = (
            "^/?$" => "/showme.php?user=%1"
        )
    }
}

对于href/dir/page.php域这样的值,链接的部分会自动从当前请求中添加,如浏览器的地址栏中所示。所以,如果你使用过www.example.com; 该链接将指向htp://www.example.com/dir/page.php并同样指向john.example.com.

对于所有指向的链接www.example.com,您需要使用www. 只有当您从虚 URL 到实际 URL 进行外部重定向时,这才有可能,即用户仍然可以使用缩短的 URL,但他们会被重定向到实际 URL。

$HTTP["host"] != "www.example.com" {
    $HTTP["host"] =~ "^([^.]+)\.example\.com$" {
        url.redirect = (
            "^/?$" => "http://www.example.com/showme.php?user=%1"
        )
    }
}
于 2013-10-19T07:27:00.850 回答