GNU/Linux >> Znalost Linux >  >> Linux

Nemohu přijít na pravidlo htaccess

Jediné, co toto pravidlo dělá, je přidat koncové / na vaše URL, pokud žádná není a pokud není . v URI, takže https://example.org/test bude přesměrován na https://example.org/test/ , ale https://example.org/test.html nebude přepsán na https://example.org/test.html/ (ale pozor:https://example.org/test.case/folder také nebude být přesměrován na https://example.org/test.case/folder/ protože obsahuje . v 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]

Bez ověření, ale s využitím mých zkušeností s přepisováním Apache se zdá, že tato konfigurace:

  1. Odpovídá části URI „cesta“ (nikoli server, port nebo parametry dotazu), například „/my/location/file.html“.
  2. Shodujte se, pokud tato část nekončí znakem '/' (lomítko), -nebo- neobsahuje '.' (tečka) znak.
  3. Použijte část URI s úplnou cestou a připojte k ní lomítko.
  4. Odešlete přesměrování HTTP 301 (trvalé), aby byl prohlížeč přesměrován na tento nový identifikátor URI.

Výsledkem budou následující testovací případy

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

Takže si myslím, že cílem pravidla je přidat lomítka ke zdrojům, které se nezdají být souborem, ale zdá se, že mají okrajový případ.

Pokud nepřidáte lomítko ke zdroji s '.' znak (tečka) v nesouborové části cesty by měl být regulární výraz změněn na:

# 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. Nelze nainstalovat Wine na Ubuntu Studio 19.10?

  2. Jak mohu provést `git pull` bez opětovného zadání hesla SSH?

  3. Jak zjistím, který /dev je USB flash disk?

  1. Jak zjistit, které verze balíčku mohu nainstalovat na APT

  2. Jak mohu zjistit, jak dlouho trvalo provedení mé práce ve slumu?

  3. Jak mohu zjistit, zda má můj server IPMI nějakého druhu?

  1. Lze initramfs odstránit na odkládací disk?

  2. Jak mohu zjistit, který operační systém serveru je na konkrétním webu spuštěn?

  3. Nelze připojit svazek nfs – vypršel časový limit