Autor Zpráva
Joan
Profil
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
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
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
Joan
Profil
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
Joan:
to není jednička značící počet stránek, to je jen proměnná, proto ten dolar před ní.
Joan
Profil
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
když existuje možnost na serverech Onebitu zapnout tzv. symlink pro zobrazování stránek bez www na začátku?

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]
tam dávat nemám, že?
Davex
Profil
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.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: