3

我在 .htaccess 中有以下内容:

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

Everyting 效果很好,但结果 URL 的 $_POST 为空。

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

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

4

3 回答 3

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>
于 2013-11-28T19:07:44.427 回答
0

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

RewriteRule ^(.*)\.htm$ index.php?url=$0.htm [QSA,L]
于 2011-01-26T23:50:38.687 回答
-1

我正是这个问题。它在一台服务器上运行,然后在下一台服务器上运行。至少可以说是烦人和耗时!

在使用这个 php 进行大量检查后:

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

在 index.php 的顶部检查从 htaccess 文件发送的值,(以及许多其他我不会进行的检查!)我最终发现您需要指定“RewriteBase”

添加RewriteBase /到 htaccess 文件的顶部使其可以在我尝试过的所有服务器上运行。

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

希望它对您有所帮助 - 知道这肯定会在许多小时前帮助我!

于 2011-09-25T10:47:32.647 回答