重写期间不解释php变量

重写期间不解释php变量,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我的任务是帮助为一个面向外部的网站提供基础设施,一切都很好,它已经部署好,傀儡控制和我的标准万岁等等 然而,它变得棘手,因为我们是由外部开发人员为网站提供代码的,他们很快就注意到“重写不起作用” 我花了一些时间来检查这一点,并且使用.htaccess文件重写apache确实工作得很好。 问题在于重写操作期间没有传递或解释php变量 我发布了一个关于stackoverflow的问题,其中包含了非常详细的信息,从那以后,我大大简化了我的示例 在我的前一个线程中,没有人能够确定这个问题,所以我简化了

我的任务是帮助为一个面向外部的网站提供基础设施,一切都很好,它已经部署好,傀儡控制和我的标准万岁等等

然而,它变得棘手,因为我们是由外部开发人员为网站提供代码的,他们很快就注意到“重写不起作用” 我花了一些时间来检查这一点,并且使用.htaccess文件重写apache确实工作得很好。 问题在于重写操作期间没有传递或解释php变量 我发布了一个关于stackoverflow的问题,其中包含了非常详细的信息,从那以后,我大大简化了我的示例

在我的前一个线程中,没有人能够确定这个问题,所以我简化了我的测试用例

我的基本疑难解答.htaccess文件在这里

<ifModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^test/test2/$ test.php?var=test2&var2=test [L]
RewriteRule ^hello.html redir.html [L]
</ifModule>
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
它显示了正在解析的2个变量,并显示在页面上。但是如果我访问使用重写的url

http-//server.example.net/test/test2/

然后我得到了以下结果

Notice: Undefined index: var in /var/www/itnews/test.php on line 4
Notice: Undefined index: var2 in /var/www/itnews/test.php on line 4
aa
这告诉我我被正确地重定向到页面,但是变量有问题。 如果有帮助的话 OS-Centos 7 x64和所有最新更新

php packages
php.x86_64                       5.4.16-36.el7_1                       @base
php-cli.x86_64                   5.4.16-36.el7_1                       @base
php-common.x86_64                5.4.16-36.el7_1                       @base
php-gd.x86_64                    5.4.16-36.el7_1                       @base
php-mbstring.x86_64              5.4.16-36.el7_1                       @base
php-mysql.x86_64                 5.4.16-36.el7_1                       @base
php-pdo.x86_64                   5.4.16-36.el7_1                       @base
php-snmp.x86_64                  5.4.16-36.el7_1                       @base
阿帕奇

httpd.x86_64                     2.4.6-40.el7.centos                   @base
httpd-tools.x86_64               2.4.6-40.el7.centos                   @base
最后,我的重写日志

[Mon Feb 22 13:10:16.901115 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffef2d0/subreq] [perdir /var/www/itnews/] add path info postfix: /var/www/itnews/test.php -> /var/www/itnews/test.php/test2/
[Mon Feb 22 13:10:16.901131 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffef2d0/subreq] [perdir /var/www/itnews/] strip per-dir prefix: /var/www/itnews/test.php/test2/ -> test.php/test2/
[Mon Feb 22 13:10:16.901135 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffef2d0/subreq] [perdir /var/www/itnews/] applying pattern '^test/test2/$' to uri 'test.php/test2/'
[Mon Feb 22 13:10:16.901140 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffef2d0/subreq] [perdir /var/www/itnews/] add path info postfix: /var/www/itnews/test.php -> /var/www/itnews/test.php/test2/
[Mon Feb 22 13:10:16.901144 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffef2d0/subreq] [perdir /var/www/itnews/] strip per-dir prefix: /var/www/itnews/test.php/test2/ -> test.php/test2/
[Mon Feb 22 13:10:16.901147 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffef2d0/subreq] [perdir /var/www/itnews/] applying pattern '^hello.html' to uri 'test.php/test2/'
[Mon Feb 22 13:10:16.901156 2016] [rewrite:trace1] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffef2d0/subreq] [perdir /var/www/itnews/] pass through /var/www/itnews/test.php
[Mon Feb 22 13:10:16.901241 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffdd240/initial] [perdir /var/www/itnews/] add path info postfix: /var/www/itnews/test.php -> /var/www/itnews/test.php/test2/
[Mon Feb 22 13:10:16.901251 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffdd240/initial] [perdir /var/www/itnews/] strip per-dir prefix: /var/www/itnews/test.php/test2/ -> test.php/test2/
[Mon Feb 22 13:10:16.901255 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffdd240/initial] [perdir /var/www/itnews/] applying pattern '^test/test2/$' to uri 'test.php/test2/'
[Mon Feb 22 13:10:16.901274 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffdd240/initial] [perdir /var/www/itnews/] add path info postfix: /var/www/itnews/test.php -> /var/www/itnews/test.php/test2/
[Mon Feb 22 13:10:16.901279 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffdd240/initial] [perdir /var/www/itnews/] strip per-dir prefix: /var/www/itnews/test.php/test2/ -> test.php/test2/
[Mon Feb 22 13:10:16.901282 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffdd240/initial] [perdir /var/www/itnews/] applying pattern '^hello.html' to uri 'test.php/test2/'
[Mon Feb 22 13:10:16.901286 2016] [rewrite:trace1] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffdd240/initial] [perdir /var/www/itnews/] pass through /var/www/itnews/test.php
[Mon Feb 22 13:10:16.901375 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffe7290/subreq] [perdir /var/www/itnews/] add path info postfix: /var/www/itnews/test2 -> /var/www/itnews/test2/
[Mon Feb 22 13:10:16.901387 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffe7290/subreq] [perdir /var/www/itnews/] strip per-dir prefix: /var/www/itnews/test2/ -> test2/
[Mon Feb 22 13:10:16.901391 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffe7290/subreq] [perdir /var/www/itnews/] applying pattern '^test/test2/$' to uri 'test2/'
[Mon Feb 22 13:10:16.901395 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffe7290/subreq] [perdir /var/www/itnews/] add path info postfix: /var/www/itnews/test2 -> /var/www/itnews/test2/
[Mon Feb 22 13:10:16.901401 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffe7290/subreq] [perdir /var/www/itnews/] strip per-dir prefix: /var/www/itnews/test2/ -> test2/
[Mon Feb 22 13:10:16.901405 2016] [rewrite:trace3] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffe7290/subreq] [perdir /var/www/itnews/] applying pattern '^hello.html' to uri 'test2/'
[Mon Feb 22 13:10:16.901408 2016] [rewrite:trace1] [pid 29768] mod_rewrite.c(468): [client 192.168.0.55:65280] 192.168.0.55 - - [server.example.net/sid#7f8f6fceb9c0][rid#7f8f6ffe7290/subreq] [perdir /var/www/itnews/] pass through /var/www/itnews/test2
请注意,我在ops工作,对php不熟悉,所以我正在研究有关php工作原理的二手信息。

写在下面一行

RewriteRule ^(.*)/(.*)$ /test.php?var=$1&var2=$2 [NC,L]
而不是

RewriteRule ^test/test2/$ test.php?var=test2&var2=test [L] // incorrect

希望它能帮助您:)

您好,谢谢您的快速回答,当我这样做时,我会得到以下html输出重定向:/test.php/test2aa so。。。有事情发生了。但是,我希望看到的应该是Test2Atest。我得到的输出对您有意义吗?您的浏览器URL是什么?谢谢。这实际上现在效果很好。基本上,我现在已经确定,我提供的服务器没有“坏”多亏了你!看起来我们有一个更大的问题,我们的重写规则没有正确执行。标记为答案的。
RewriteRule ^(.*)/(.*)$ /test.php?var=$1&var2=$2 [NC,L]
RewriteRule ^test/test2/$ test.php?var=test2&var2=test [L] // incorrect