Apache Mod Rewrite语法:获取的路径

Apache Mod Rewrite语法:获取的路径,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我在Apache的mod_重写语法方面遇到了一些问题。我需要的是: 路径 "www.example.com/public/path/to/file.txt" 需要成为: www.example.com/public/?p=path%2Fto%2Ffile.txt 也就是说,“public/”之后的所有内容都应该进行URL编码并添加为GET参数“p”。任何简单的代码片段都可以做到这一点吗?将这些规则放在public文件夹中的htaccess文件中: RewriteEngine On Rewr

我在Apache的mod_重写语法方面遇到了一些问题。我需要的是:

路径

"www.example.com/public/path/to/file.txt"
需要成为:

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

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

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

RewriteEngine On

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

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

太好了,谢谢。在客户端浏览器的地址栏中保留原始URL的同时,有没有办法让它这样做?i、 e./public/path/to/file.txt URL?好的,您的代码中似乎有一个小错误。我认为最后一位应该是“/?p=$1[L,B]”(请注意代码段中没有的前导句点)。如果没有这个,它会做一些奇怪的重定向循环。@Jordan是的,对不起,忘记了htaccess在公用文件夹中。您也可以这样做,以便删除
/