Cześć
Chciałbym zadać tu kilka pytań związanych z przygotowywaniem serwisu(ów) do wrzucenia do sieci.
-
RewriteRule w mod_rewrite Apache
Po ustaleniu zasady przepisywania można dodać flagi, np.[R=301,L]
.
Jeżeli nie doda się flagiR
(Redirect), to dojdzie do wewnętrznego przepisania adresu i odpowiedzi "jak gdyby nigdy nic, tak po prostu"
Natomiast ustawienie tej flagi sprawi, że dojdzie do jawnego przekierowania i w odpowiedzi w nagłówku pojawi się wpis w styluLocation: nowy_adres
, a w ciele odpowiedzi będzie dokument. Oczywiście w zależności od przekierowania 301, a 302, może być jeszcze wpis o stałym przeniesieniu, co będzie domyślnie cache'owane w wielu przeglądarkach.
Czyli: RewriteRule powinno być stosowane z flagąR
, wtedy gdy chcemy stale przekierować kogoś i sprawić, że przeglądarka odnotuje nowy adres w adressbar'ze (np. przekierować z www.adres.com na adres.com). Natomiast bez tej flagi wtedy, gdy chcemy stworzyć przyjazne URL'e, i pozostawić adres w adressbar'ze i sprawić, że robot przeglądarek internetowych nie odnotuje tego, iż faktyczny adres jest inny. Tak? -
Architektura dla RewriteRule
Jeżeli tworzę stronę z panelem administratora, który będzie dodawał automatycznie kolejne podstrony, a całość kodowana jest w UTF-8, to czy następujące rozwiązanie byłoby uznane za całkiem ok, czy jest dla tego jakiś nawet dedykowany zamiennik:
Administrator dodaje stronę, o załóżmy tytule 'Zażółć gęślą jaźń'. Wtedy w bazie danych odnotowuję dodanie strony o takiej nazwie. W kodzie PHP ucinam akcenty i robię z tego czyste ASCII, a spacje zamieniam na myślniki, (tutaj 'Zazolc-gesla-jazn').Taki wpis dodaję jako RewriteRule (bez flagi. Następnie gdzieś w tablicy z podstronami serwisu w kolumnie, np.R
;) )friendlyURL
dodaję 'Zazolc-gesla-jasn' z powyższej zmiany. Gdy kiedykolwiek serwis odwołuje się do tej podstrony korzysta z friendlyURL zamiast z bezpośredniego adresu, np. 'Zażółć gęślą jaźń'.Dodatkowo: Czy raczej powinno zmieniać się wszystkie znaki na małe litery? Czy raczej nie powinno się brać innych znaków niż [a-z0-9./\_]?
EDIT: Jeden globalny RewriteRule dla friendlyURLRewriteRule ^(.*)$ index.php?path=$1 [L]
w połączeniu z powyższym (poza przekreśleniem), czy to jest 'optymalne rozwiązanie', czy może jest jakiś dedykowany zamiennik, dla choćby przechowywania friendlyURL'i?
A parsowanie dalszych argumentów? W PHP, czy bawić się wyrażeniem regularnym w.htaccess
? -
Symulowanie drzewa dokumentów
Czy gdy z RewriteRule będę symulował drzewo dokumentów, np.podstrony/artykuly/rewriterule-wprowadzenie/
, a obsługiwał to jednym plikiemview.php?id=x
, to czy jest to całkiem ok, czy raczej powinno się to robić inaczej? Czy jest jakiś sensowny sposób, dla osoby z zewnątrz (w tym też robota), na sprawdzenie, że struktura jest inna (oczywiście odpowiednie przekierowania zewnętrzne/wewnętrzne uzupełniające też będą)?
Co za tym idzie,style, js, grafiki i inne embed'y oraz linki
muszą mieć ścieżkę zaczynającą się od/
, co sugeruje główny katalog publiczny serwera? Czy to też jest uważane za ok i czy jest SEO-friendly? -
Jakie znaczenie ma w 2015/2016 robots.txt i sitemap.xml? Wiele źródeł o tym jest sprzed jakichś 5+ lat.
Dziękuję za odpowiedzi, byłoby miło uzyskać konkretne potwierdzenie.