Jak WordPress obsługuje permalinki?


11

WordPress automatycznie koryguje linki bezpośrednie (adresy URL), nawet jeśli zostaną wprowadzone nieprawidłowo. Na przykład WordPress cię wyląduje, example.com/some-postnawet jeśli wejdziesz example.com/idontexist/some-postlub nawetexample.com/some

Może być tak, że WordPress używa RegEx podobnego lub jakiegoś algorytmu dopasowywania, który porównuje od prawej do lewej, a jeśli znajdzie dopasowanie, zabierze Cię na stronę, nawet jeśli /.*/pozostanie po lewej stronie. Tylko zgadnij! Jak to robi WordPress?

Edit: Zauważyłem również, że kontrole plików .htaccess dla plików / katalogów wirtualnych przy użyciu !fa !di przekierowuje żądanie do index.php w folderze blogu.

Odpowiedzi:


6

Funkcja redirect_canonical w /wp-include/canonical.php jest wywoływana na dowolnym danym adresie URL i będzie próbowała odgadnąć adres URL, którego chciał użytkownik, i przekieruje go tam, gdy adres URL nie istnieje. Ma całą ogromną ilość kodu, aby to zrobić dla wszelkiego rodzaju typowych błędów.


1
Głosowano za „całą ogromną kwotę”: D.
Travis Northcutt


1

To całkiem proste. WordPress wykorzystuje operatora LIKE w zapytaniu SQL do odgadnięcia pełnego adresu URL z częściowego adresu URL, gdy jest to strona 404

Sprawdź ten kod pobrany z redirect_guess_404_permalink()funkcji /wp-includes/canonical.php

$where = $wpdb->prepare( 'post_name LIKE %s', $wpdb->esc_like( get_query_var( 'name' ) ) . '%' );
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.