URL を /server/?Server=ServerName
から /server/ServerName
に単純に書き換えて、ServerName
パラメータが渡されるようにしようとしています。 PHP 。
現在、.htaccess
ファイルにこれがあります:
/server/ServerName
または /server/?Server=ServerName
を表示しようとすると、404 エラーが発生しました。
これは私の書き換えログです:
リーリーこの時点で、私はイライラしていて、単純なことが欠けているように感じているので、少し指導が必要です。
調整してみました:
コードの書き換えも検討し、実際に書き換えられているかどうかを確認してみました。
以下のコードを使用して、ディレクトリ /test2/
を /server/?Server=ServerName
に正常に書き換え、ページが正常に読み込まれたので、モジュールがアクティブで実行中であることがわかります。 .
この変更を試みましたが、失敗しました。 URL は書き換えられませんが、ページは読み込まれます。 Apache 2.4 .htaccess フレンドリーな URL 書き換え
ああああP粉1822188602024-01-17 13:48:59
あなたは間違った方向に進んでいるようです。 HTML ソースでは /server/ServerName
にリンクする必要があるため、内部的にリクエストは /server/ServerName
から /em> /server/index に書き換えられます。 .php?Server=ServerName
(コメントに記載されているように、index.php
を追加することに注意してください)。 /server/index.php?Server=ServerName
は、実際にリクエストを処理する基礎となる (隠し) ファイルへのパスです。
最後の行で言及されているようですが...
URL を書き換える必要があります。書き換えないとページが読み込まれません。 「書き換え」とは正確に何なのかについて混乱があるかもしれません。これにより URL は変更されません。 URL を
変更するために .htaccess を使用しません。 HTML ソース内の URL (リンク先の URL) を手動で変更する必要があります。
必要に応じて、後で (オプションで) 外部「リダイレクト」を実装できます。これにより URL が変更されます。ただし、この は、古い URL にリンクしたりインデックスを作成したりする検索エンジンやサードパーティをリダイレクトするためにのみ使用されます。つまり、これは SEO のためであり、アプリを「機能」させるためではありません。
つまり、次の順序で要約すると、次のとおりです。HTML ソース コード内の URL を変更して、
(オプション) 既存の URL 構造を変更する場合は、直接リクエストを /server/index.php?Server =ServerName##) にリダイレクトします。 #) を
/server/ServerName (正規 URL) に変更します。 < /code>
内部的にリクエストを
/server/ServerName
(プロセス) に書き換えます。要求された基礎となるファイル)。
ルート
リーリー
これは、最後のルールで
END
condition を含める必要がなくなります (リダイレクト ループを回避するため)。
最初のルール (「リダイレクト」) の index.php
%1 後方参照には、前述の
condition で取得された
Server URL パラメーターの値が含まれています。 Server URL パラメータは空であってはならず、(前のルールで指定した正規表現に従って) ドットやスラッシュを含めることはできません。そうでない場合、パラメータはリダイレクトまたは書き換えられません。正規表現文字クラスのリテラル ドットにはバックスラッシュ エスケープが必要ないことに注意してください。
リクエストされた URL
が末尾のスラッシュで終わらない (つまり、
/server/ServerName である) (例に基づいて) と仮定していることに注意してください。 server/ ServerName/) なので、RewriteRule
< code>pattern の末尾にあるオプションの /?
last ルールを削除しました。ログの抜粋はそうではないことを示唆しているように見えますが? URL の末尾のスラッシュと末尾以外のスラッシュを許可する必要がある場合は、重複したコンテンツ (スラッシュスラッシュのない URL は別の URL です)。
Server
URL パラメーター値に何を期待するかに応じて、
( これがこのコンテキストにおけるデフォルトの動作であるため、noescape
) フラグが必要な場合とそうでない場合があります。 QUERY_STRING
サーバー変数は URL エンコードされます。 .htaccess
で PT
(passthrough
) フラグを使用する必要はありません。 (PT
フラグは、server または virtualhost のコンテキストで mod_rewrite を使用する場合にのみ関連します。)