GNU/Linux >> Linux の 問題 >  >> Linux

htaccess ルールがわかりません

このルールが行うことは、末尾に / を追加することだけです 何もない場合と . がない場合は、URL に URIで、だから https://example.org/test https://example.org/test/ にリダイレクトされます 、しかし https://example.org/test.html https://example.org/test.html/ に書き換えられません (ただし、注意:https://example.org/test.case/folder しない https://example.org/test.case/folder/ にリダイレクトされます . が含まれているため URI で)。

## Do the following if the URI does not end with `/` or  does not contain an `.`: 
## the . is relevant for file names like test.html, which should n 
RewriteCond %{REQUEST_URI} !(/$|\.)

## Redirect it to the original URI with an added `/` and mark this as permanent:
RewriteRule (.*) %{REQUEST_URI}/ [R=301]

検証はしませんが、私の Apache 書き換えの経験を利用すると、この構成は次のように思われます:

<オール>
  • 「/my/location/file.html」など、URI の「パス」部分 (サーバー、ポート、クエリ パラメータではない) で一致します。
  • この部分が「/」(スラッシュ) 文字で終わっていない場合、または「.」が含まれていない場合に一致します。 (ドット) 文字。
  • URI のフル パス部分を使用し、それにスラッシュを追加します。
  • HTTP 301 (永続的) リダイレクトを送信して、ブラウザをこの新しい URI に誘導します。
  • これにより、次のテスト ケースが生成されます

    / -> / /test -> /test/ /my/resource -> /my/resource/ /my/resource.type -> /my/resource.type /edge.case/resource -> /edge.case/resource

    したがって、この規則には、ファイルではないように見えるリソースにスラッシュを追加する目的があると思いますが、特殊なケースがあるようです.

    「.」を使用してリソースにスラッシュを追加しない場合正規表現を変更する必要があるパスのファイル以外の部分の (ドット) 文字:

    # match paths which do not end with a slash, or do not resemble a file with an extension
    RewriteCond %{REQUEST_URI} !(/$|\.[^/]+$)
    # redirect permanently to the same uri with a slash
    RewriteRule (.*) %{REQUEST_URI}/ [R=301]
    

    Linux
    1. .htaccessを使用してhttpをhttpsにリダイレクトする方法は?

    2. ファイルの MIME タイプ (Content-Type) を調べるにはどうすればよいですか?

    3. SSH パスワードを再入力せずに「git pull」を実行するにはどうすればよいですか?

    1. iptables の各ルールのヒット数を確認するにはどうすればよいですか?

    2. サーバーに何らかの IPMI があるかどうかを確認するにはどうすればよいですか?

    3. initramfs をページアウトしてディスクをスワップできますか?

    1. 特定のサイトで実行されているサーバー OS を確認するにはどうすればよいですか?

    2. NFS ボリュームをマウントできません - タイムアウト

    3. php5-fpm の起動に失敗した理由を確認するにはどうすればよいですか?