3

.htaccess に次のものがあります。

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

Everyting はうまく機能しますが、結果の URL には $_POST が空です。

[QSA,L] を [L] に変更するとうまく動作するため、HTML や PHP ではなく、mod_rewrite のバグであると 100% 確信しています。しかし、私は本当に 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」を指定する必要があることがわかりました。

htaccess ファイルの先頭に追加RewriteBase /すると、試したすべてのサーバーで動作しました。

(また、次のように設定することを忘れないでください: RewriteBase /folder-where-file-is/ 「folder-where-file-is」は、サブフォルダーにある場合は index.php ファイルの場所です)

お役に立てば幸いです-これが何時間も前に私を助けてくれたことは確かです!

于 2011-09-25T10:47:32.647 に答える