我在.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配置选项。
答案 0 :(得分:0)
以这种方式修改规则怎么样?它会改变什么吗?
RewriteRule ^(.*)\.htm$ index.php?url=$0.htm [QSA,L]
答案 1 :(得分: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>
答案 2 :(得分:-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文件的位置,如果在子文件夹中)
希望它可以帮助你 - 知道这肯定会在很多个小时前帮助我!