2

htaccessに以下のコードがあります

RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .?- [S=2]
RewriteRule ^abc/(.*)/(.*)$ index.php?aa=$1&bb=$2 [NE,L,QSA]
RewriteRule ^abc/(.*)$ index.php?aa=$1 [NE,L,QSA]

そして、以下のURLを渡すと

http://example.com/abc/some-example?id=123

私によると、私はPHPでge$aa = some-exampleおよびinすることになっています$id = 123

しかし、私は以下のエラーが発生しています

Not Found

The requested URL /abc/[S=2] was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

上記の .htaccess ファイルは、以下のように URL を渡すと正常に動作します

http://example.com/abc/someexample?id=123
4

2 に答える 2

1

この行のダッシュの前にスペースがないと思います:

RewriteRule .?- [S=2]

次のようにする必要があります。

RewriteRule .? - [S=2]

編集:なぜこのルールがあるのですか?削除してみてください。

私の知る限り、リクエストが特定のファイルと一致しない場合、次の 2 つのルールをスキップするように apache に指示しているため、書き換えではなく 404 が返されます。

要求された URL が書き換え正規表現と一致しない場合に備えて、フレンドリーな 404 ページの最後にルールを追加することもできます。

于 2013-07-08T06:25:59.387 に答える