WebToDate/Návody/Doporučené přepisy URL
Tento návod obsahuje seznam pravidel pro přepisy URL v Apache modulu mod_rewrite doporučených či možných při nasazení WebToDate v běžné konfiguraci, která využívá možnosti změn ve tvaru URL stránek.
Zprávy
Zobrazení stránky se zprávou
Máme-li v konfiguraci WebToDate definován tvar URL pro zprávy
define( 'DETAILURL', '<!--WTD_F(CATEGORYPATH)--><!--WTD_CONVERT(TITLE)-->-<!--WTD_F(ID)-->/' );
a URL jsou tedy generována jako např.
/zpravy/domaci/poslanci-rozhodnout-o-strukture-uradu-prace-188377/
(id zprávy je identifikováno na konci URL jako –číslo/), použijeme následující pravidlo:
RewriteRule ^/.*\-([0-9]+)(\/?)$ /scripts/detail.php?id=$1 [NC,PT,L]
Zprávy se stránkovaným seznamem příloh
Máme-li pro URL zpráv stejné nastavení jako v předchozím případě, webová prezentace obsahuje stránkované seznamy příloh ke zprávám (např. fotogalerie) a chceme URL dalších stránek seznamů v rámci stránkování ve tvaru
/zpravy/domaci/poslanci-rozhodnout-o-strukture-uradu-prace-188377/81/2/
(poslední číslo v URL je číslo stránky v rámci stránkování), použijeme následující pravidlo:
RewriteRule ^/.*\-([0-9]+)/([0-9]+)\/([0-9]+)\/$ /scripts/detail.php?id=$1&conn=$2&pg=$3 [NC,PT,L]
Zprávy se zvýrazněním hledaných slov
Používáme-li extenzi pro zvýraznění hledaných slov a chceme-li i pro tento případ URL bez znaku otazník, můžeme ve WebToDate stylu pro formátování seznamu nalezených položek generovat odkazy na zprávy kódem
<a href="<!--WTD_F(TITLELINK)-->keyword-<!--WTD_FULLTXT(SEARCHTEXTENC)-->/"><!--WTD_F(TITLE)--></a>
Výsledkem jsou pak odkazy typu
/zpravy/domaci/stech-slibil-sefredaktorum-prosazovat-nizsi-dph-na-tisk-191478/keyword-policie/
(hledaný výraz je uložen za /keyword-). V takovém případě použijeme následující pravidlo:
RewriteRule ^/.*\-([0-9]+)\/keyword\-([^/]+)\/$ /scripts/detail.php?id=$1&keyword=$2 [NC,PT,L]
Blokování přímého přístupu na nativní URL zpráv
Pokud se používají důsledně rewritovaná URL pro zprávy, je možné zablokovat funkčnost nativních URL pro zprávy, čímž se předejde tomu, aby na prezentaci bylo možné zobrazit duplicitní URL se stejným obsahem. To předpokládá následující:
- Všechny zprávy mají vygenerováno rewritované URL
- Pokud se používá zobrazení zdrojů v samostatné HTML stránce, je zapnuto generování rewritovaných URL i pro zdroje (konfigurační konstanta ASSETS_FRIENDLY_URL je na hodnotě true)
- Rewritovaná URL se používají i pro stránkování seznamu příloh.
V tom případě použijeme následující pravidlo (URL typu /scripts/detail.php?id=xxx jsou zakázána, URL typu /scripts/detail.php?id=xxx&ev=2, která se používají pro náhledy zpráv volané z administračního rozhraní, jsou povolena):
RewriteCond %{REQUEST_URI} /scripts/detail.php
RewriteCond %{QUERY_STRING} id=
RewriteCond %{QUERY_STRING} !(pgid=|ev=2)
RewriteRule .* - [F]
Stránky
Kanonická URL stránek
Pokud se chceme ujistit, že URL obsahující výchozí dokument budou přesměrována na adresu bez názvu výchozího dokumentu (tj. fyzicky má stránka URL /zpravy/domaci/default.htm, ale chceme vždy jen tvar /zpravy/domaci/), použijeme následující pravidlo pro přesměrování:
RewriteRule ^(.*)/default\.(htm|html) $1/ [R,L]
Stránky s dynamickým seznamem zpráv
Pokud chceme zobrazovat WebToDate stránky s dynamickým obsahem pod URL typu
/zahranicni/evropa/nejnovejsi-zpravy-pg273/
(pro první stránku v rámci stránkování seznamu), resp.
/zahranicni/evropa/nejnovejsi-zpravy-pg273/5140/2/
(pro další stránku v rámci stránkování seznamu), použijeme pravidla:
RewriteRule ^/.*\-pg([0-9]+)\/$ /scripts/detail.php?pgid=$1 [NC,PT,L] RewriteRule ^/.*\-pg([0-9]+)\/([0-9]+)\/([0-9]+)\/$ /scripts/detail.php?pgid=$1&conn=$2&pg=$3 [NC,PT,L]
Vybrané sekce definované staticky
Pokud chceme výčtem definovat adresy, které odpovídají nějakým dynamickým URL (typicky adresy zadávané ručně jako URL do vlastností kategorií WebToDate pro účely generování navigačních elementů), použijeme pro každou stránku zvlášť pravidla typu
RewriteRule ^/zpravy/kultura/hudba/ /scripts/detail.php?pgid=37 [NC,PT,L] RewriteRule ^/hledani/ /scripts/modules/fulltext/fulltxt.php [NC,PT,L] RewriteRule ^/zpravy/domaci/archiv/ /scripts/detail.php?pgid=176 [NC,PT,L]
Omezení přístupu na vybrané soubory
Zákaz pro adresář data
Adresář /data/ se využívá při nasazení některých modulů (Formuláře a katalogy apod.) pro import a export dat, neboli může obsahovat datové soubory v různých formátech, které nejsou určeny k anonymnímu zobrazování či stahování. Pokud chceme omezit přístup k tomuto adresáři jen pro funkce volané z administračního rozhraní, použijeme pravidlo:
RewriteCond %{HTTP_REFERER} !/admin\.*
RewriteRule ^/data/.* - [F]
Nejedná se o vysoký stupeň zabezpečení, protože pravidlo využívá referer, který lze při cíleném pokusu o stažení podvrhnout, ale pouze o základní zákaz přístupu.
Zákaz pro soubory verzovacího systému
Distribuce WebToDate může v různých adresářích obsahovat soubory verzovacího systému pojmenované vssver.scc, které není nutné zpřístupňovat ke stahování. Tomu můžeme zabránit pravidlem:
RewriteRule ^(.*)vssver\.scc - [F]