0

I have a PHP based blog on Apache with a simple mod_rewrite happening:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^(.*)$ index.php?story=$1 [L]

However, when I look at $_GET['story'] in the PHP script, it gives me "index.php" everytime.

Any ideas?

4

1 に答える 1

1

内部または外部リダイレクトの原因となる変更がパス中に行われた場合、Apache はルールを再度実行します。index.php のルールでこれをキャッチする必要があります。

RewriteRule ^index\.php$ - [L]

そのアドレスをそのまま使用するだけです。これがWordPressの機能です。

Apache のバージョンによっては、RewriteLogLevel または LogLevel のいずれかを使用して、書き換えログ レベルを 8 に設定できます。古いバージョンでは、これは httpd.conf で行う必要があるため、ローカルのテスト サイトが必要です。

ログオンしたままにしないでください。パフォーマンスが低下します。

編集:

L フラグの下での再実行に関するドキュメントからの引用を次に示します。

.htaccess ファイルまたはセクションで RewriteRule を使用している場合は、ルールがどのように処理されるかをある程度理解しておくことが重要です。これを簡略化すると、ルールが処理されると、書き換えられたリクエストが URL 解析エンジンに返され、可能な処理が行われます。書き換えられた要求が処理されると、.htaccess ファイルまたはセクションが再び検出され、ルールセットが最初から実行される可能性があります。最も一般的なのは、ルールの 1 つがリダイレクト (内部または外部のいずれか) を引き起こし、リクエスト プロセスが最初からやり直された場合です。

于 2013-03-29T23:33:13.153 に答える