正则表达式quandry - 用于单词匹配

时间:2013-10-18 02:55:22

标签: regex mod-rewrite lighttpd

我不在这里,目前正在阅读教程并使用python学习正则表达式。

我有一个网站,其中php文件http://www.example.com/showme.php?user=JOHN将加载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. 识别第一个.之前的网址的第一部分何时不是www并且是其他内容 - 这样example.com就不会将其丢弃。
  2. 在第一个.之前获取网址的第一部分并将其标记为user=###
  3. 非常感谢

1 个答案:

答案 0 :(得分: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。

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