![htaccess mod_rewrite 难题](https://linux22.com/image/588309/htaccess%20mod_rewrite%20%E9%9A%BE%E9%A2%98.png)
好的,我有这个包含以下内容的 .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/whatever 时,它会自动假定 index.php,并忽略它,它会自动将 .php 添加到其中,而我并不想这样做。有什么想法可以阻止这种情况吗?
答案1
需要将其添加-MultiViews
到 httpd.conf 文件中。