Bu benim htaccess var ama bunun ne olduğunu anlayamıyorum. Kuralın doğası gereği arama da yardımcı olmaz.
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301]
Herkes bunun ne için açıklayabilir misiniz?
Bu benim htaccess var ama bunun ne olduğunu anlayamıyorum. Kuralın doğası gereği arama da yardımcı olmaz.
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301]
Herkes bunun ne için açıklayabilir misiniz?
Yanıtlar:
Bu kural Bütün yaptığı bir sondaki eklemektir /
hiçbiri varsa sizin URL'lere ve hiçbir varsa .
URI'de, böylece https://example.org/test
yönlendirilecek https://example.org/test/
, ancak https://example.org/test.html
için yeniden olmayacak https://example.org/test.html/
(ancak not: https://example.org/test.case/folder
ayrıca edecek değil yönlendirilmek https://example.org/test.case/folder/
içerdiği olarak bir .
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]
/test.case/folder
ayrıca yeniden yönlendirilmez" - Küçük nokta, ancak "klasör" bir dosya sistemi dizini ise, mod_dir (varsayılan olarak) bir eğik çizgi eklemek için 301 yönlendirmesi yayınlar. Bu sadece bir /test.case/some-other-virtual-url
eğik çizgi olması gerekiyorsa bir sorundur .
Doğrulamadan, ancak Apache yeniden yazma deneyimimi kullanarak, bu yapılandırma şöyle görünüyor:
Bu aşağıdaki test durumlarıyla sonuçlanacaktır
/ -> /
/test -> /test/
/my/resource -> /my/resource/
/my/resource.type -> /my/resource.type
/edge.case/resource -> /edge.case/resource
Bu yüzden kuralın bir dosya gibi görünmeyen kaynaklara eğik çizgi eklemek için bir amacı olduğunu düşünüyorum, ancak bir kenar durumu var gibi görünüyor.
'.' İle bir kaynağa eğik çizgi eklemezseniz. yolun dosya olmayan kısmında (nokta) karakteri, normal ifadenin şu şekilde değiştirilmesi gerekir:
# 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]
!(\/$|\.[^\/]*)
- Güncellenmiş normal ifadeniz gerçekten farklı değil. 2. kısımda (uzantıyla eşleşen) dize sonu bağlantısına da ihtiyacınız vardır. Belki şöyle bir şey: !(/|\.[a-zA-Z]+)$
(eğik çizgilerden kaçmaya gerek yok).
/
ve ".
" içermiyorsa , isteği a ile ekleyerek yeniden yönlendirin/
. Bu kuralın muhtemel amacı, otomatik dizin indekslemeyi işlemektir.