Każdy chce przyjaznych SEO adresów URL dla swoich stron internetowych, ale nie zawsze jest tak łatwy, jak się wydaje.
Pomimo mnóstwa przykładów i dokumentów, mod_rewrite to voodoo . Cholernie fajne voodoo, ale wciąż voodoo.
- Brian Moore
Dokładnie.
Jeśli więc chcesz przepisać swoje adresy URL, aby ułatwić użytkownikom zapamiętywanie lub pomóc w optymalizacji wyszukiwarki, oto pomoc.
Zacznij od prawej - podstawy
Musisz zacząć od pliku o nazwie „.htaccess”. Nic więcej. To nie jest „code.htaccess” lub „smile.htaccess”, tylko „.htaccess”. Najłatwiej jest edytować plik w prostym programie tekstowym, takim jak Notatnik. Jeśli spróbujesz go edytować w Dreamweaver, pamiętaj, że musisz kliknąć plik prawym przyciskiem myszy i wybrać „Otwórz za pomocą… Dreamweaver”, aby go otworzyć.
Następnie musisz umieścić następujące informacje na górze pliku:
RewriteEngine On RewriteOptions dziedziczy opcje + FollowSymlinks Options -Wieloosobowe
Pierwsza linia włącza RewriteEngine, co jest dość oczywiste.
Jeśli korzystasz z wirtualnego hosta (nie swojego dedykowanego hosta), upewnij się, że dodajesz drugą linię.
Znalazłem różne opinie na temat trzeciej linii. Niektórzy mówią, że powinieneś z niego korzystać, inni nie. Używam go głównie dlatego, że wiele osób twierdzi, że twój plik nie będzie działał bez niego. Voodoo… powiedziałem ci.
Czwarty wiersz to VITAL, jeśli używasz Godaddy (lub zakładam, że większość wirtualnych hostów) MUSISZ mieć tę linię, aby niektóre kodowania działały.
A jeśli zaczynasz od folderu, dodaj:
RewriteBase / new
gdzie „/ new” to podfolder, w którym znajduje się Twoja witryna.
Przekierowanie zewnętrzne
Kiedy mówimy „przekierowanie zewnętrzne”, mamy na myśli to, że faktycznie zmieniamy wygląd adresu URL na pasku przeglądarki. Jeśli więc wpiszesz „http://mywebsite.com/deal.php”, poniższy kod tworzy adres URL „http://mywebsite.com/deal”. Jest to pierwszy krok, potrzebne będą zarówno zewnętrzne, jak i wewnętrzne przekierowania, aby ta praca działała (w przeciwnym razie komputer będzie szukał / nie istniał).
W .htaccess używasz znaku „#” do skomentowania tekstu. Pierwsze dwie linie poniżej to tylko komentarze.
## hide .php rozszerzenie ## Do zewnętrznego przekierowania /dir/foo.php do / dir / foo RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteCond% {THE_REQUEST} ^ [AZ] {3, } s ([^.] +). php [NC] RewriteRule ^% 1 [R, L, NC]
Linia 3 i 4 oraz 5 to wszystkie warunki. .htaccess rozwija się na warunkach. Sprawdzamy, czy adres URL, który umieściliśmy, nie jest plikiem lub nie jest katalogiem, a kończy się na .php (NC = nie rozróżnia wielkości liter), a następnie przepisujemy go w wierszu 6.
Jeśli chcesz znaleźć każdy znak w powyższym kodowaniu, szybkie wyszukiwanie google wyjaśni każdy z nich.
Najważniejsze z nich to:
^ = wskazuje początek
$ = wskazuje koniec adresu URL (pierwsza część, ta, którą chcemy zmienić)
. = okres ma inne znaczenie w .htaccess, więc aby ZNACZYĆ okres, musisz umieścić przed nim ukośnik (linia 5 na końcu, powyżej)
[R, L, NC] = To są dodatkowe informacje dla pliku
[R] = przekierowanie (zewnętrzne)
[L] = Ostatnia część tych reguł - na przykład powyższe warunki kończą się na linii 6, a wszystko po tym nie podlega tym warunkom.
[NC] = Niewrażliwe na wielkość liter
Ponadto powinieneś wiedzieć, że plik .htaccess tworzy zmienne automatycznie, numerycznie - dzięki czemu automatycznie utworzy $ 1, 2 $, 3 $, zgodnie z kodowaniem. Musisz to wiedzieć, przechodząc do następnej sekcji.
Wewnętrzny do przodu
Internal Forwards zajmuje się tworzeniem adresu URL, który wygląda tak: „http://mywebsite.com/deal” i sprawia, że komputer faktycznie pobiera ten „http://mywebsite.com/deal.php”.
Jeśli korzystasz z zewnętrznego i wewnętrznego przekazu do przodu, to sprawia, że Twój SEO URL jest przyjazny.
## Aby wewnętrznie przekazywać / katalog / foo do /dir/foo.php RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D RewriteRule ^ (. *?) / ([A-zA-Z0-9_- ] +) / ([0-9] +) $ /new/$1.php?ID=$3 [L]
Ponownie sprawdzamy plik i katalog w wierszach 2 i 3, a następnie uruchamiamy regułę przepisywania.
Mój oryginalny adres URL był następujący:
http://website.com/new/property/page?ID=28394&29021-Avenue-Sherman
Chciałem, żeby to było:
http://website.com/new/property/page/29021-Avenue-Sherman/28394
W czwartej linii uruchamiamy URL, a następnie automatycznie tworzymy „zmienną”, dopasowując: (. *?). Tworzymy dwie kolejne zmienne za pomocą nawiasów. Pierwszą zmienną ($ 1) będzie „właściwość / strona”, drugą będzie „29021-Avenue-Sherman”, a trzecią będzie „28394”. Pamiętasz tę bazę przepisywania na początku? To sprawia, że 1 $ jest równy „własności / stronie”.
UWAGA: Nie można przepisać niczego, co nie jest pierwotnie w adresie URL. Nie mogłem więc dodać adresu. Musi on być zawarty w oryginalnym adresie URL, który ma zostać przepisany.
Następnie kończymy tę sekcję „$”, robimy jedno miejsce i rozpoczynamy przepisywanie. To przepisanie zostanie ukryte, ponieważ nie mamy [R] na końcu, tylko [L], aby zakończyć warunkowanie. Ten nowy adres URL jest tym, czego potrzebuję, aby uzyskać informacje na stronie, a mianowicie numer ID nieruchomości. Nie potrzebuję adresu do kodowania, ale jeśli to zrobisz, możesz także dodać „& address = $ 2” na końcu tego adresu URL.
streszczenie
.htaccess jest skomplikowany. Jest wiele rzeczy, które mogą pójść źle, a niektóre z nich na początku się nie pojawią. Ale mam nadzieję, że to da ci początek w realizacji (powiedziałbym) najbardziej popularnej rzeczy związanej z .htaccess.
I kilka dzięki:
Anubhava za jego pomoc w moim pytaniu StackOverflow.com.
Webdeskil który, chociaż nie odpowiedział konkretnie na pytanie, które wysłałem, odpowiedział inny, który dał mi rozwiązanie.
I inne liczne samouczki .htaccess dostępne online.
1.php?Com/new/property/page?
Pamiętasz tę bazę przepisywania na początku?