【问题标题】:url rewrite for lighttpd - regexlighttpd 的 url 重写 - 正则表达式
【发布时间】:2015-04-23 07:32:18
【问题描述】:

我想将我的网址转换为不带参数的短网址,但在第一次尝试时,我会将正则表达式减少为一种情况:

有很多正常的 url 不应该受到影响。我想重写网址的唯一情况是用户个人资料页面。

目前它们看起来像这样:

www.dummy.com/index.php?user=USERNAME&id=USERID

目标方案如下所示:

www.dummy.com/USERNAME/USERID

用户名几乎可以包含任何字符(不包括 /),而不仅仅是 a-z/A-Z。

我从来都不擅长正则表达式,也不知道如何处理这个问题。欢迎提出任何建议。

不会有对文件夹 (www.dummy.com/folder/subfolder) 的请求,但确认用户 ID 是整数值会很好,但不是必需的。

【问题讨论】:

    标签: php regex url-rewriting lighttpd


    【解决方案1】:

    您可以在DOCUMENT_ROOT/.htaccess 文件中使用此代码:

    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^(\w+)/(\d+)/?$ index.php?user=$1&id=$2 [L,QSA]
    

    这将匹配以下任一 URL:

    /abcd/123
    /abcd/123/
    /abcd456/6789
    /abcd456/6789/
    

    编辑:

    在 LigthHttpd 中使用这个等效规则:

    url.rewrite = ( "^/(\w+)/(\d+)/?(?:\?(.*))?$" => "/index.php?user=$1&id=$2&$3" )
    

    【讨论】:

    • 谢谢。但我使用 lighttpd。 .htaccess 文件是否与 lighty 兼容? PS:用户名几乎可以包含任何字符。
    • 我会检查轻量级 https 文档,但我认为应该支持它。为了支持任何角色,我会改变答案。
    • LightHTTPD 中将是:url.rewrite = ( "^/(\w+)/(\d+)/?(?:\?(.*))?$" => "/index.php?user=$1&id=$2&$3" ) See this helpful guide
    • 谢谢。我想这对我来说已经足够接近了。小的修改是没有问题的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多