【问题标题】:What is wrong with me redirect regular expression?我重定向正则表达式有什么问题?
【发布时间】:2014-06-23 23:45:27
【问题描述】:

我有 2 个重定向,它们都在内部重定向。

 RewriteEngine on
 RewriteCond %{HTTP_HOST}        ^[^.]+\.[^.]$
 RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
 RewriteRule   ^(.*)\/(.*) /var/www/$1/www.$1/$2 #THIS line is not working

 RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
 RewriteRule   ^([^.]+)\.(.*/)(.*) /var/www/$2$1.$2$3

我无法让第一个工作。
它应该这样做:
网址:example.org/the/uri/the/user/used
rewriterule 应该将他重定向到:/var/www/example.org/www.example.org/the/uri/the/user/used

所以我的问题是:我要查找的正则表达式是什么?

编辑:

这是我现在的引擎 :)

<VirtualHost *:80>
        ServerAdmin *@gmail.com
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        RewriteEngine on
        RewriteCond %{HTTP_HOST}                ^[^.]+\..[^.]+$
        RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
        RewriteRule   ^([^\/]*)(.*)$            /var/www/$1/www.$1/$2 [L]

        RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
        RewriteRule   ^([^.]+)\.(.*/)(.*) /var/www/$2$1.$2$3 [L]
</VirtualHost>

它将 example.org 内部重定向到 /var/www/example.org/www.example.org
和第二部分。它将 foo.example.org 重定向到 /var/www/example.org/foo.example.org

【问题讨论】:

    标签: regex apache mod-rewrite redirect


    【解决方案1】:

    你的正则表达式是,

    ^[^:]*:\s*([^\/]*)(.*)$
    

    如果没有 uri 部分,您的正则表达式将是,

    ^([^\/]*)(.*)$
    

    DEMO

    解释:

    url: example.org/the/uri/the/user/used
    

    在上面的例子中,: 之后的字符串和下一个/ 被捕获到 group1 中。其余部分被捕获到 group2 中。通过在替换部分给出/var/www/$1/www.$1$2 可能会给你想要的结果。(表示捕获组的标记可能因语言而异,我使用$ 表示捕获组)。

    【讨论】:

    • 没有 url:.我试着修改它,你链接我的测试人员也说它工作正常。但现在不行了?
    【解决方案2】:

    我相信这就是您正在寻找的:

    RewriteCond   %{HTTP_HOST}  (?:www\.)?(.*)
    RewriteRule   (.*)          /var/www/%1/www.%1/$1
    

    我在这里对其进行了测试,它按预期工作:http://htaccess.madewithlove.be/

    【讨论】:

    • 它几乎可以工作了!如果 rewriteCondition 以 www 开头,则应该拒绝重写。也很奇怪,它没有用。当我尝试 mysite.com 时,它给出了 404 错误。
    猜你喜欢
    • 2020-08-07
    • 2013-09-13
    • 1970-01-01
    • 2012-02-24
    • 2012-12-03
    相关资源
    最近更新 更多