2

.htaccess次のファイルを持っているディレクトリの1つでphpスクリプトを実行するために、PHP CGIがインストールされたapache2サーバーがあります。

RewriteEngine On
RewriteRule ^article\/(\d+)\/?$ article.php?id=$1 [NC,QSA]

書き換えなどhttp://www.mysite.com/article/132/のURIを入力するとリダイレクトが行われますが、内部article.phpでは読み取れません$_GET["id"]( var_dumpfrom $_GET/$_REQUEST空の配列になります

私が持っている別のサーバーでは、mod_php を使用した apache を使用しています - すべて正常に動作します。

CGI がその理由であると 100% 確信しているわけではありませんが、そう推測する十分な理由があります。

ありがとう!

4

1 に答える 1

2

これは、mod_negotiation が望ましくないときに物事を台無しにするように漠然と聞こえます。これを htaccess ファイルに追加してみてください:

Options -Multiviews

このMultiviewsオプションは mod_negotiation で何かを有効にし、リクエストの後にあるリソースを推測しようとします。URI/article/somethingを確認し、次に fileがあることを確認すると、mod_rewrite を完全にバイパスして、/article.php意図したものと見なしてそれを完全に提供します。/article.php/something

于 2013-10-31T19:56:25.560 に答える