【问题标题】:Mod Rewrite syntax: path to GETMod重写语法:GET路径
【发布时间】:2014-01-03 04:40:22
【问题描述】:

我在使用 Apache 的 mod_rewrite 语法时遇到了一些问题。这是我需要的:

路径

"www.example.com/public/path/to/file.txt"

需要成为:

www.example.com/public/?p=path%2Fto%2Ffile.txt

也就是说,“public/”之后的所有内容都应该进行 URL 编码并添加为 GET 参数“p”。有什么简单的代码sn-ps可以做到这一点吗?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    将这些规则放在 public 文件夹中的 htaccess 文件中:

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /?p=$1 [L,B]
    

    这里重要的是B 标志,它确保/ 被编码为%2F。不过,我不确定你是否真的需要它。

    【讨论】:

    • 完美,谢谢。有没有办法可以做到这一点,同时将原始 URL 留在客户端浏览器的地址栏中?即 /public/path/to/file.txt URL?
    • 好的,您的代码中似乎有一个小错误。我认为最后一位应该是“./?p=$1 [L,B]”(请注意不在您的 sn-p 中的前导句点)。没有这个,它会做一些时髦的重定向循环。
    • @Jordan 是的,抱歉,忘记 htaccess 在 public 文件夹中。您也可以这样做,以便删除 /
    猜你喜欢
    • 2010-12-17
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 2013-08-21
    相关资源
    最近更新 更多