Nie jest to miejsce na przedstawienie pełnego samouczka, ale tutaj jest w skrócie;
RewriteCond w zasadzie oznacza „wykonaj następną RewriteRule tylko wtedy, gdy to prawda”. !-lŚcieżka jest warunek, że wniosek nie jest linkiem ( !środki nie, -lśrodki link)
RewriteRule w zasadzie oznacza, że jeśli wniosek jest zrobione, że mecze ^(.+)$(pasuje do dowolnego adresu URL z wyjątkiem korzenia serwera), zostanie on przepisany jako index.php?url=$1co oznacza prośbę o ollezostanie przepisany jako index.php?url=olle).
QSAoznacza, że jeśli istnieje ciąg zapytania przekazany z oryginalnym adresem URL, zostanie on dołączony do przepisywania ( olle?p=1zostanie przepisany jako index.php?url=olle&p=1.
L oznacza, że jeśli reguła pasuje, nie przetwarzaj więcej RewriteRules poniżej tej.
Aby uzyskać więcej informacji na ten temat, skorzystaj z powyższych linków. Obsługa przepisywania może być nieco trudna do uchwycenia, ale istnieje sporo przykładów dotyczących przepływu stosów, z których można się uczyć.
QSA zastępuje ?się &, uniemożliwiając odróżnić /page&foobarvs /page?foobar. Jak mogę powstrzymać QSA przed zamianą ?na &?
Pacerier
8
Jeśli spełnione są następujące warunki, przepisz adres URL:
Jeśli żądana nazwa pliku nie jest katalogiem,
RewriteCond %{REQUEST_FILENAME} !-d
a jeśli żądana nazwa pliku nie jest zwykłym plikiem, który istnieje,
RewriteCond %{REQUEST_FILENAME} !-f
a jeśli żądana nazwa pliku nie jest dowiązaniem symbolicznym,
RewriteCond %{REQUEST_FILENAME} !-l
następnie przepisz adres URL w następujący sposób:
Weź całą nazwę pliku żądania i podaj ją jako wartość parametru zapytania „url” do index.php. Dołącz dowolny ciąg zapytania z pierwotnego adresu URL jako dalsze parametry zapytania (QSA) i zatrzymaj przetwarzanie tego pliku .htaccess (L).
To przechwytywanie żądań do plików, takich jak version,
releasei README.md, itd., Które powinny być traktowane zarówno jako punktów końcowych, jeśli zdefiniowane (jak w przypadku / release), lub jako „nie znaleziono”.
Odpowiedzi:
Nie jest to miejsce na przedstawienie pełnego samouczka, ale tutaj jest w skrócie;
RewriteCond w zasadzie oznacza „wykonaj następną RewriteRule tylko wtedy, gdy to prawda”.
!-l
Ścieżka jest warunek, że wniosek nie jest linkiem (!
środki nie,-l
środki link)RewriteRule w zasadzie oznacza, że jeśli wniosek jest zrobione, że mecze
^(.+)$
(pasuje do dowolnego adresu URL z wyjątkiem korzenia serwera), zostanie on przepisany jakoindex.php?url=$1
co oznacza prośbę oolle
zostanie przepisany jakoindex.php?url=olle
).QSA
oznacza, że jeśli istnieje ciąg zapytania przekazany z oryginalnym adresem URL, zostanie on dołączony do przepisywania (olle?p=1
zostanie przepisany jakoindex.php?url=olle&p=1
.L
oznacza, że jeśli reguła pasuje, nie przetwarzaj więcej RewriteRules poniżej tej.Aby uzyskać więcej informacji na ten temat, skorzystaj z powyższych linków. Obsługa przepisywania może być nieco trudna do uchwycenia, ale istnieje sporo przykładów dotyczących przepływu stosów, z których można się uczyć.
źródło
?
się&
, uniemożliwiając odróżnić/page&foobar
vs/page?foobar
. Jak mogę powstrzymać QSA przed zamianą?
na&
?Jeśli spełnione są następujące warunki, przepisz adres URL:
Jeśli żądana nazwa pliku nie jest katalogiem,
a jeśli żądana nazwa pliku nie jest zwykłym plikiem, który istnieje,
a jeśli żądana nazwa pliku nie jest dowiązaniem symbolicznym,
następnie przepisz adres URL w następujący sposób:
Weź całą nazwę pliku żądania i podaj ją jako wartość parametru zapytania „url” do index.php. Dołącz dowolny ciąg zapytania z pierwotnego adresu URL jako dalsze parametry zapytania (QSA) i zatrzymaj przetwarzanie tego pliku .htaccess (L).
Dokumenty Apache #flag_qsa
Inny przykład:
Z flagą [QSA] żądanie dotyczące
zostanie zmapowany do
źródło
To przechwytywanie żądań do plików, takich jak
version
,release
iREADME.md
, itd., Które powinny być traktowane zarówno jako punktów końcowych, jeśli zdefiniowane (jak w przypadku / release), lub jako „nie znaleziono”.źródło