微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法重写url并在.htaccess中追加参数

这是我的.htaccess规则:

RewriteCond %{REQUEST_URI} ^/work RewriteCond %{QUERY_STRING} ^foo=bar$ RewriteRule ^(.*)$ /test.PHP

不幸的是,如果我想追加一些参数到重写的path,它不起作用:

RewriteCond %{REQUEST_URI} ^/work RewriteCond %{QUERY_STRING} ^foo=bar$ RewriteRule ^(.*)$ /test.PHP?par=new

如果我添加[R=301]那么它也可以工作,但我不想添加它,因为我不希望用户看到更改的地址:

RewriteCond %{REQUEST_URI} ^/work RewriteCond %{QUERY_STRING} ^foo=bar$ RewriteRule ^(.*)$ /test.PHP?par=new [R=301]

为什么不是第二个工作? 我错过了什么? 环境:Ubuntu 12.04,XAMPP(Apache / 2.4.4)

用.htaccess将一个特定的urlredirect到另一个url

RewriteCond里的%N反向引用

.htaccess – 从RewriteCond中排除目录

lighttpd上的apache .htaccess文件

在phalcon框架中的友好的URL在Ubuntu中不工作

谢谢。

编辑1

在将Apache升级到2.4之后 ,每次内部URL重写都不再起作用 ,这似乎是与Apache 2.4相关的一个错误

的.htaccess:

RewriteCond %{QUERY_STRING} ^foo=bar$ RewriteRule ^work/(.*)$ /test.PHP?par=new [L]

当执行curl http://alison/work/?foo=bar -v时loggingcurl http://alison/work/?foo=bar -v

[Thu Aug 28 15:36:39.728123 2014] [rewrite:trace3] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1e05820/initial] [perdir /home/amareknight/Projects/firstmg/root/alison/] strip per-dir prefix: /home/amareknight/Projects/firstmg/root/alison/work/ -> work/ [Thu Aug 28 15:36:39.728141 2014] [rewrite:trace3] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1e05820/initial] [perdir /home/amareknight/Projects/firstmg/root/alison/] applying pattern '^work(.*)$' to uri 'work/' [Thu Aug 28 15:36:39.728170 2014] [rewrite:trace4] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1e05820/initial] [perdir /home/amareknight/Projects/firstmg/root/alison/] RewriteCond: input='foo=bar' pattern='^foo=bar$' => matched [Thu Aug 28 15:36:39.728186 2014] [rewrite:trace2] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1e05820/initial] [perdir /home/amareknight/Projects/firstmg/root/alison/] rewrite 'work/' -> '/test.PHP?par=new' [Thu Aug 28 15:36:39.728201 2014] [rewrite:trace3] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1e05820/initial] split uri=/test.PHP?par=new -> uri=/test.PHP,args=par=new [Thu Aug 28 15:36:39.728218 2014] [rewrite:trace1] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1e05820/initial] [perdir /home/amareknight/Projects/firstmg/root/alison/] internal redirect with /test.PHP [INTERNAL REDIRECT] [Thu Aug 28 15:36:39.728420 2014] [rewrite:trace3] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1fa24a0/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] strip per-dir prefix: /home/amareknight/Projects/firstmg/root/alison/work/index.html -> work/index.html [Thu Aug 28 15:36:39.728436 2014] [rewrite:trace3] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1fa24a0/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] applying pattern '^work(.*)$' to uri 'work/index.html' [Thu Aug 28 15:36:39.728457 2014] [rewrite:trace4] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1fa24a0/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] RewriteCond: input='par=new' pattern='^foo=bar$' => not-matched [Thu Aug 28 15:36:39.728473 2014] [rewrite:trace1] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1fa24a0/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] pass through /home/amareknight/Projects/firstmg/root/alison/work/index.html [Thu Aug 28 15:36:39.728624 2014] [rewrite:trace3] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1f9a360/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] strip per-dir prefix: /home/amareknight/Projects/firstmg/root/alison/work/index.html.var -> work/index.html.var [Thu Aug 28 15:36:39.728640 2014] [rewrite:trace3] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1f9a360/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] applying pattern '^work(.*)$' to uri 'work/index.html.var' [Thu Aug 28 15:36:39.728660 2014] [rewrite:trace4] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1f9a360/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] RewriteCond: input='par=new' pattern='^foo=bar$' => not-matched [Thu Aug 28 15:36:39.728675 2014] [rewrite:trace1] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1f9a360/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] pass through /home/amareknight/Projects/firstmg/root/alison/work/index.html.var [Thu Aug 28 15:36:39.728741 2014] [rewrite:trace3] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1fa24a0/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] strip per-dir prefix: /home/amareknight/Projects/firstmg/root/alison/work/index.PHP -> work/index.PHP [Thu Aug 28 15:36:39.728760 2014] [rewrite:trace3] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1fa24a0/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] applying pattern '^work(.*)$' to uri 'work/index.PHP' [Thu Aug 28 15:36:39.728779 2014] [rewrite:trace4] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1fa24a0/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] RewriteCond: input='par=new' pattern='^foo=bar$' => not-matched [Thu Aug 28 15:36:39.728794 2014] [rewrite:trace1] [pid 14865] mod_rewrite.c(468): [client 127.0.0.1:33092] 127.0.0.1 - - [alison/sid#1b438a0][rid#1fa24a0/subreq] [perdir /home/amareknight/Projects/firstmg/root/alison/] pass through /home/amareknight/Projects/firstmg/root/alison/work/index.PHP

我有index.PHP位于/工作目录,似乎Apache只是忽略INTERNEL_REDIRECT和加载index.PHP

用连字符replace空格%20和+

在.htaccess文件中重写URL

国防部重写假的子域名?

如何使用htaccess在Apache服务器上设置post_max_size(获取内部服务器错误

无法获取.htaccess mod_rewrite规则工作 – 404找不到

你可以在你的根目录下使用你的规则.htaccess:

RewriteEngine On RewriteCond %{QUERY_STRING} ^foo=bar$ [NC] RewriteRule ^work /test.PHP?par=new [L,QSA,NC]

这会在内部重写一个URL /work/abc?foo=bar到/test.PHP?foo=bar&par=new

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐