htaccess mod_rewrite难题

时间:2012-06-25 18:16:17

标签: .htaccess mod-rewrite apache2

好的,所以我有这个包含此

的.htaccess文件
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php?p=%{REQUEST_URI}&%{QUERY_STRING} [L]
</IfModule>

问题是,在apache 2.2.22中,p和其他查询对象都没有通过, 但它在apache 2.4.2中运行良好。

所以基本上在apache 2.2.22中它只是将所有内容转发给index.php,但它没有任何get个对象。

任何帮助,谢谢。

更新

好的,所以我改变了行

RewriteRule . /index.php?p=%{REQUEST_URI}&%{QUERY_STRING} [L]

RewriteRule ^(.*) /index.php?p=$1 [L,QSA] 现在在apache 2.2.22上,p GET没有通过,但我添加的任何特定查询都会通过。

所以,如果我这样做

http://localhost/index/fun/buns/funds?man=woman

2.4.2我得到

array (size=2)
  'p' => string 'index/fun/buns/funds' (length=20)
  'man' => string 'woman' (length=5)

和2.2.22我得到了

array(1) {
  ["man"]=>
  string(5) "woman"
}

要明确 2.4.2上发生的事情是我想要的,2.2.22是不合作的。

另一个更新好的,好像发生了什么事情,当我做/索引/无论什么时,它自动假设index.php,并忽略它,它会自动添加.php给它,当我不想要的时候。关于如何阻止它的任何想法?

1 个答案:

答案 0 :(得分:1)

问题解决了:我需要将-MultiViews添加到httpd.conf文件中。