WebToDate/Návody/Doporučené přepisy URL

Z WebToDate
Verze z 15. 6. 2011, 14:07, kterou vytvořil Jardac (diskuse | příspěvky) (Založena nová stránka: Tento návod obsahuje seznam pravidel pro [http://cs.wikipedia.org/wiki/Rewrite_engine přepisy] URL v [http://httpd.apache.org Apache] modulu ''[http://httpd.apache.org/do…)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaciSkočit na vyhledávání

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]