将url路径转换为查询字符串,同时将旧查询字符串保留为.htaccess
基本上,使用.htaccess,我想从以下url开始:将url路径转换为查询字符串,同时将旧查询字符串保留为.htaccess,.htaccess,url,redirect,query-string,.htaccess,Url,Redirect,Query String,基本上,使用.htaccess,我想从以下url开始: localhost/data/image.jpg?size=400 要访问此url,请执行以下操作: localhost/image.php?file=data/image.jpg&size=400 我试着从互联网上得到各种各样的东西,但似乎没有任何东西符合我的目的 我对如何使用.htaccess知之甚少,这使得在线理解各种答案有点困难 编辑:我已经尝试过了,这是重定向的一部分 RewriteEngine On RewriteRule da
localhost/data/image.jpg?size=400
要访问此url,请执行以下操作:
localhost/image.php?file=data/image.jpg&size=400
我试着从互联网上得到各种各样的东西,但似乎没有任何东西符合我的目的
我对如何使用.htaccess知之甚少,这使得在线理解各种答案有点困难
编辑:我已经尝试过了,这是重定向的一部分
RewriteEngine On
RewriteRule data/(.*) /image.php?file=data/$1 [PT]
除了删除我不想要的?size=400
当我试着打字的时候
RewriteEngine On
RewriteRule data/(.*)?(.*) /image.php?file=data/$1&size=$2 [PT]
输出似乎是localhost/image.php?file=data/image.png%26size=
,这根本不起作用
另外,我希望能够进一步了解您展示的样本,而不仅仅是数据/稍后,请您尝试以下内容。 请在测试URL之前清除浏览器缓存
RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/data/(image\.jpg)?(size=\d+)\s [NC]
RewriteRule ^ image.php?file=data/%1&size=%2 [L]
就我个人而言,当有其他选择时,我尽量避免使用
%{THE_REQUEST}
。这里的RewriteRule可以匹配路径,因此RewriteCond可以直接查看查询字符串内容
RewriteCond %{QUERY_STRING} ^size=
RewriteRule ^data/(.*) image.php?file=data/$1 [L,QSA]
QSA
标志使mod_rewrite将您正在创建的查询字符串与原始字符串合并
根据您的具体需要,查询字符串的条件可以更精确(或更少)。现在,它只是检查查询字符串是否以size=
开头,而不是更多
如果您想重定向所有
/data/image.jpg
请求,不管它们是否有查询字符串,如果它们有查询字符串,不管它包含什么,那么可以完全删除RewriteCond。如果存在一个查询字符串,它将通过QSA
标志合并,如果不存在,那么它将只包含您的文件
参数。欢迎这样做,请在您尝试过的问题中添加您的htaccess文件,谢谢。您能尝试这样的操作吗,RewriteCond%{query\u string}^size=
和重写规则^data/(*)image.php?file=data/$1[L,QSA]
如果需要,查询字符串的条件可以更加具体,或者如果您还想重写/data/image.jpg
,也可以完全省略。QSA标志将原始查询字符串与新查询字符串合并。@CBroe这已经解决了它!非常感谢。你可以把它写成一个实际的答案,我会验证它:D-如果我想使用数据以外的东西,我可以简单地写RewriteRule^(.*)image.php?file=$1[L,QSA]
,在这种情况下你必须小心,因为模式^(.*)
也会匹配image.php
,所以这可以很容易地创建一个循环。我应该写一些东西来代替%{THE_REQUEST}吗?@TotoShampoin,是的,我们应该使用它,让我知道它是如何运行的。我不知道用什么来代替%{THE_REQUEST},但它显然不适用于%{REQUEST_URI},也不适用于%{QUERY STRING}。。。我可能在这里遗漏了什么。@TotoShampoin,这是在我的本地测试的,您能告诉我您在这里点击的是哪一个示例URL吗?在调试.htaccess网站上,它说在这两种情况下,第2行的重写条件与查询不匹配(localhost/image.jpg?size=400)