Autor | Zpráva | ||
---|---|---|---|
Joan Profil |
#1 · Zasláno: 13. 4. 2010, 09:52:55 · Upravil/a: Joan
Dost stránek jsem si o mod_rewrite vyhledala ale vůbec si nejsem jistá, které ze dvou řešení je to správné.
Stojím před překopáním svého dosud statického webu se soubory v html na koncovky php. Nebudu mít žádné proměnné v adrese, protože pouze na patřičná místa includuji menu a patičku (proč to dělám zrovna takhle je pro tuto chvíli nepodstatné). Robot už mé stránky v html zaindexoval. 1) Chci, aby lidé, kteří už mají odkaz na nějakou podstránku uloženou v html, o něj nepřišli v případě změny koncovky na php. Proto si myslím, že správná metoda by byla podstrčení stránky v php místo přesměrování, přičemž v adresním řádku by se stále zobrazovalo html (přípona na konci v adrese mi absoulutně nevadí). Na druhou stranu jsem četla, že podstrčení jiného obsahu trestají vyhledávače snížením PageRanku. Ovšem stránky se budou lišit jen a pouze includovaným menu a patičkou (místo ručně vepsaných deseti odkazů v menu) tak to nebude snad tak zlé. Takže až stránky nahraji na web místo v html v php, mám do .htaccess napsat # podstrceni RewriteEngine on RewriteRule *\.html *.php aby to platilo kompletně pro všechny stránky a uložit .htaccess do kořenového adresáře www - nebo jsem zcela mimo mísu? A za 2) Musím mít v kořenovém adresáři webu jak všechny soubory v html, tak současně v php nebo už stačí pouze v php? Prosím poraďte! Děkuji moc. |
||
bohyn Profil |
#2 · Zasláno: 13. 4. 2010, 15:02:41
1) Takovéto podstrčení se bežně používá a záleží na tom co preferuješ.
# podstrceni RewriteEngine on RewriteRule ^(.*)\.html$ $1.php Do budoucna nebude ani problém s proměnnými v adrese. Stačí přidat na konec řádku s pravidlem [QSA] RewriteRule ^(.*)\.html$ $1.php [QSA] 2) Pokud je server nastaven aby jako index bral i PHP soubory (pravděpodobně ano), stačí ponechat jen soubory s koncovkou .php |
||
Davex Profil |
#3 · Zasláno: 13. 4. 2010, 19:44:51
bohyn:
Pro jistotu bych tam přidal úvodní lomítko a název souboru podmínil alespoň jedním znakem (ale to už jsou jen drobnosti): # podstrceni RewriteEngine on RewriteRule ^(.+)\.html$ /$1.php |
||
Časová prodleva: 3 dny
|
|||
Joan Profil |
#4 · Zasláno: 16. 4. 2010, 10:03:51 · Upravil/a: Joan
Děkuji!
Proč je ale před .php ta jednička když chci podstrčit VŠECHNY php soubory místo původních html (aby v adresním řádku to html zůstalo)? |
||
panther Profil |
#5 · Zasláno: 16. 4. 2010, 10:06:58
Joan:
to není jednička značící počet stránek, to je jen proměnná, proto ten dolar před ní. |
||
Časová prodleva: 3 dny
|
|||
Joan Profil |
#6 · Zasláno: 19. 4. 2010, 08:59:19 · Upravil/a: Joan
Dovolím si ještě navázat, protože na Onebitu píšou, že
"Před použitím přepisovacích pravidel nezapomeňte na začátek souboru .htaccess přidat direktivu RewriteBase / Adresář / v tomto případě odpovídá adresáři, v kterém je .htaccess umístěn." a tady to nikdo nenapsal. Takže ji mám do svého .htacces raději napsat? Potom: v tomto pravidle RewriteRule ^(.+)\.html$ /$1.php znak stříšky znamená pravděpodobně začátek pravidla, že? A proč se jednička vyskytuje pouze u proměné vázané k php a ne současně u proměnné vázané k html? Mám do .htaccess dávat i Options +FollowSymlinks Mám dost obavu, že si stránky rozvrtám k nepřístupnosti proto se raději ptám víckrát, děkuji za pochopení :-) EDIT: jinak na této stránce je to pěkně popsáno, nikde jinde jsem to dosud nenašla. Ale ten příznak [R=301,L] |
||
Davex Profil |
#7 · Zasláno: 19. 4. 2010, 20:40:49
Pokud se v přepisovacím pravidle použije úvodní lomítko v /$1.php, tak není konfigurační volba RewriteBase nutná, ale bude to samozřejmě fungovat i s ní.
První parametr volby RewriteRule je regulární výraz. Proměnná $1 vznikne zapamatováním řetězce, který vyhovuje části regulárního výrazu v závorkách - viz Mod_rewrite - Proměnné z regulárů. Bez konfigurační volby FollowSymlinks by mod_rewrite nefungoval, takže už je většinou zapnuta ve výchozí konfiguraci serveru a není nutné ji znovu zapínat. Příznak [R=301] slouží k přesměrování stránky na jinou adresu (změní se adresa v prohlížeči), takže ho tam nedávej. |
||
Časová prodleva: 14 let
|
0