.Htaccess dosyamdaki $ 1 [QSA, L] ne anlama geliyor?


Yanıtlar:


215

Tam bir eğitim verilecek yer değil, ama burada kısaca;

RewriteCond temelde "sonraki RewriteRule'u yalnızca bu doğruysa çalıştır" anlamına gelir. !-lYol isteği (bağlantı için olmadığı durumdur !aracı olmadığı, -laraçlar bağlantı)

RewriteRule temelde istek maçları olduğu yapılırsa anlamına gelir ^(.+)$(sunucu kök hariç her URL'yi) olarak, bu yeniden yazılır index.php?url=$1için bir istek anlamına gelir olleolarak yeniden yazılır index.php?url=olle).

QSAorijinal URL ile iletilen bir sorgu dizesi varsa, yeniden yazmaya ekleneceği anlamına gelir ( olle?p=1olarak yeniden yazılacaktır index.php?url=olle&p=1.

L kural eşleşirse, bunun altında daha fazla RewriteRules işlemeyin anlamına gelir.

Bununla ilgili daha eksiksiz bilgi için yukarıdaki bağlantıları izleyin. Yeniden yazma desteğini kavramak biraz zor olabilir, ancak stackoverflow hakkında öğrenilecek epeyce örnek var.


QSA yerini ?etmek &imkansız ayırt hale /page&foobarvs /page?foobar. QSA'nın yerine ?geçmesini nasıl durdurabilirim &?
Pacerier

8

Aşağıdaki koşullar doğruysa, URL'yi yeniden yazın:
İstenen dosya adı bir dizin değilse,

RewriteCond %{REQUEST_FILENAME} !-d

ve istenen dosya mevcut normal bir dosya değilse,

RewriteCond %{REQUEST_FILENAME} !-f

ve istenen dosya adı sembolik bir bağlantı değilse,

RewriteCond %{REQUEST_FILENAME} !-l

daha sonra URL'yi aşağıdaki şekilde yeniden yazın:
Tüm istek dosya adını alın ve bunu index.php'ye bir "url" sorgu parametresinin değeri olarak sağlayın. Orijinal URL'deki herhangi bir sorgu dizesini başka sorgu parametreleri (QSA) olarak ekleyin ve bu .htaccess dosyasını (L) işlemeyi durdurun.

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

Apache belgeleri #flag_qsa

Başka bir örnek:

RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]

[QSA] bayrağıyla,

/ sayfalar / 123? bir = iki

eşlenecek

/page.php?page=123&one=two


0

Bu gibi dosyalar için istekleri yakalayacaktır version, releaseve README.md, vb (/ salınımı durumunda olduğu gibi) gibidir, ya da eğer uç noktaları olarak ya tedavi edilmesi gereken "bulunamadı."

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.