【问题标题】:Problem with apache2 rewrite rule (mod_rewrite)apache2 重写规则的问题 (mod_rewrite)
【发布时间】:2011-11-25 13:24:42
【问题描述】:

我遇到了 mod_rewrite 和 apache2 的问题。我想这样做:

domain.com/{username}/{everything_else} 到 domain.com/users/{username}/{everything_else}

{username} 是第一个“/”之前的所有内容,{everything_else} 是第一个“/”符号之后的所有内容(可能包含其他“/”,具体数字不同)。

我试过这个没有成功:

重写规则 ^(.*)/(.*)$ /users/$1/$2 [L,NC]

重写规则 ^([^/]+)/(.*)$ /users/$1/$2 [L,NC]

仅当 {everything_else} 不包含其他斜线时才有效

重写规则 ^([^/]+)/([^/]*) 用户/$1/$2 [L,NC]

有可能做这样的事情吗?

【问题讨论】:

    标签: .htaccess mod-rewrite apache2


    【解决方案1】:

    试试这个:

    RewriteRule ^(.+?)/(.*)$ /users/$1/$2
    

    那个?在第一个捕获组中意味着:捕获尽可能少的字符(所以直到第一个 /)。其余部分按原样捕获。

    【讨论】:

    • 感谢您的建议!我试过这个,我收到这个错误消息:“由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,请使用 'LimitInternalRecursion' 来增加限制。使用 'LogLevel debug' 来获取回溯”。也许问题是,由于无限循环,因为文件夹“用户”匹配规则,并且在第一次重定向后再次开始循环。有没有办法从循环中排除以 /users/* 开头的请求?
    猜你喜欢
    • 2011-02-23
    • 2018-02-03
    • 2012-07-22
    • 2010-12-25
    • 2011-02-24
    • 2012-01-23
    • 2013-09-08
    相关资源
    最近更新 更多