将 url 路径转换为查询字符串,同时使用 .htaccess 保留旧查询字符串
Turn url path into query string while keeping the old query string with .htaccess
基本上,使用 .htaccess,我想从这个 url:
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/ [PT]
除了它会删除我不想要的 ?size=400
。
当我尝试输入时
RewriteEngine On
RewriteRule data/(.*)?(.*) /image.php?file=data/&size= [PT]
输出似乎是 localhost/image.php?file=data/image.png%26size=
,这是行不通的。
此外,我希望能够在以后的数据中走得更远
根据您展示的示例,请您尝试以下操作。
请在测试您的网址之前清除您的浏览器缓存。
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/ [L,QSA]
QSA
标志使 mod_rewrite 将您正在创建的查询字符串与原始查询字符串合并。
查询字符串的条件可以更精确(或更少)- 取决于您的具体需要。现在,它只是检查查询字符串是否以 size=
开头,而不是更多。
如果你想重定向 所有 /data/image.jpg
请求,无论它们是否有查询字符串,如果有,无论它包含什么- 然后可以完全删除 RewriteCond。如果查询字符串存在,它将通过 QSA
标志合并,如果不存在,则它将包含 仅 您的 file
参数。
基本上,使用 .htaccess,我想从这个 url:
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/ [PT]
除了它会删除我不想要的 ?size=400
。
当我尝试输入时
RewriteEngine On
RewriteRule data/(.*)?(.*) /image.php?file=data/&size= [PT]
输出似乎是 localhost/image.php?file=data/image.png%26size=
,这是行不通的。
此外,我希望能够在以后的数据中走得更远
根据您展示的示例,请您尝试以下操作。 请在测试您的网址之前清除您的浏览器缓存。
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/ [L,QSA]
QSA
标志使 mod_rewrite 将您正在创建的查询字符串与原始查询字符串合并。
查询字符串的条件可以更精确(或更少)- 取决于您的具体需要。现在,它只是检查查询字符串是否以 size=
开头,而不是更多。
如果你想重定向 所有 /data/image.jpg
请求,无论它们是否有查询字符串,如果有,无论它包含什么- 然后可以完全删除 RewriteCond。如果查询字符串存在,它将通过 QSA
标志合并,如果不存在,则它将包含 仅 您的 file
参数。