2011-01-19 141 views
3

我得在.htaccess如下:

RewriteCond %{REQUEST_URI} !app/index\.php$ 
RewriteRule ^(.*\.htm)$ index.php?url=$0 [QSA,L] 

Everyting的伟大工程,但结果网址有空$ _ POST。

我100%确定它是mod_rewrite错误,而不是HTML或PHP,因为当我将[QSA,L]更改为[L]时,它的效果很好。但我真的需要QSA。

它发生在大约30%的托管,所以这可能是一些Apache配置选项。

+3

你可以检查看看是否有任何可用在$ _REQUEST(包括$ _GET和$ _POST) - 我很好奇你的$ _POST值是否正在转换为$ _GET值... – Fenton 2011-01-19 08:37:40

+0

是的,我检查过。 $ _REQUEST只填充$ _GET值 – luchaninov 2011-01-19 20:53:32

+0

在查询中我困惑了几次的事情是$ 0而不是$ 1 – karlcow 2011-01-27 00:03:24

回答

0

以这种方式修改规则怎么样。它会改变什么吗?

RewriteRule ^(.*)\.htm$ index.php?url=$0.htm [QSA,L] 
+0

我试过了。结果相同。 – luchaninov 2011-01-27 12:16:47

-1

我就是这个问题。它在一台服务器上运行,然后不在下一台服烦人而费时地说至少!

经过大量使用这个PHP检查:

foreach ($_REQUEST AS $key => $value) echo $value."<br>"; 

在index.php文件顶部检查正在从htaccess文件,(和许多其他检查我不会去送什么样的价值观!)我最终发现你需要指定“RewriteBase”

RewriteBase /添加到htaccess文件的顶部,使它可以在我试过的所有服务器上工作。

(还记得设置为:RewriteBase /folder-where-file-is/ 其中,“文件夹,其中,文件是”是index.php文件的位置,如果在子文件夹)

希望它可以帮助你 - 知道这肯定会在很多小时前帮助我!

0

默认情况下,..也许APACHE不会启用mod_rewrite的,试试你的控制台上输入这个

sudo a2enmod rewrite

品尝我的.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    ErrorDocument 404 /index.php 
</IfModule>