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.

Praveen Lobo
źródło

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.

Otto
źródło
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' ) ) . '%' );
Pramod Jodhani
źródło