【问题标题】:.htaccess Rewrite rules: what is the differences between %1 and $1 variables (percentage vs dollar sign)? [duplicate].htaccess 重写规则:%1 和 $1 变量(百分比与美元符号)有什么区别? [复制]
【发布时间】:2017-06-03 07:26:41
【问题描述】:

到目前为止,我所有的重写规则都使用 $1, $2... 变量来形成一个干净的 URL。

现在我需要根据域名的一部分 (http://subdir.example.com => http://example.com/subdir) 以及我发现的许多使用 %1 变量而不是 $1 格式的示例进行重定向。我应该注意subdir 是一个任意字符串。

这对我来说不清楚。我试图在一两个小时内找到 $1 和 %1 变量的含义,但仍然找不到任何有用的东西。

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    您可以在 .htaccess 中使用它:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^subdir\.example\.com$
    RewriteCond %{REQUEST_URI} !^/subdir/
    RewriteRule (.*) /subdir/$1
    

    确保在测试之前清除缓存。

    来自 OP 的建议编辑:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^(.*)\.example\.com$
    RewriteCond %{REQUEST_URI} !^/????/
    RewriteRule (.*) /????/$1
    

    【讨论】:

    • 如果subdir 可以是任意字符串,您能否让您的代码更通用?我认为这是使用%1 的正确位置,这将更接近问题的核心。谢谢!
    • 我已将其作为编辑包含在内,但未删除原始内容。保留两个版本供人们测试总是好的。但是,我不能 100% 确定您为什么要删除 subdir。这是他们供人替换的,和example一样的用途。
    • 我遇到了这个问题:Difference between $1 vs %1 in .htaccess. - 我想这就是你想要的。
    • 谢谢!这就是我要找的。我认为这些问题应该以“This question already answer here...”的方式联系在一起。你知道怎么做吗?
    • 标记为重复 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2012-03-01
    相关资源
    最近更新 更多