Moje hranie sa s mod-rewrite je ako dráždenie šelmy

Opäť som upravoval nastavenia, ktoré zabezpečujú preklad z už nepoužívaných pevných adries článkov na nové.
Pôvodný systém fungoval tak, že zo starej adresy sa do skriptu dostávali *iba názvy článkov.* Potom som tabuľkou porovnával názvy a ak sa niečo našlo, tak som zobrazil článok na novej adrese. To malo rôzne problémy najmä v tom, že veľa serverov si neviem prečo uschováva skomolené pevné adresy.
Včera som solídne otravoval Arthura s PHP, dal mi veľa dobrých rád, ktoré som využil pri budovaní toho premúdrelého PHP skriptu aby čo najmenej ľudí dostávalo z vyhľadávačov 404 hlásenie.
Tentoraz som s pomocou guru z ambience upravil mod-rewrite tak, aby mi do skriptu posielal *čísla článkov.* Pôvodné pevné adresy ich obsahovali. Tabuľku mám teraz novú s položkami – adresa nového článku k číslu článku v starom systéme.
Takto by to už malo pracovať aj v prípadoch, že je pôvodná stará pevná adresa skomolená a jediné nezmenené je číslo článku napr. /archives/000123.html a podľa toho už skript vie z tabuľky nájsť článok. Ak ho už takto nenájde, tak zobrazí hlásenie o nenájdení.
Výsledkom je radikálne zníženie zobrazení 404, ktoré sa už obmedzuje na staré články, ktoré som ešte nevygeneroval.
Preto si ako výraz vďaky pozrite:
* Arthur Dent na blog.sme
* dusoft na ambience
* mekelleho perepúť (za tie sprosté reči o tom, že sa mu odkazy v článkoch na Spravodaj zobrazujú ako 404

Môže sa Vám ešte páčiť...

3 komentáre

  1. mego píše:

    jak v mod_rewrite nastavit pro subdomény, aby fungovaly jak s www, tak bez nich ? dejme tomu: http://www.spravodaj.madaj.net, nebo jen spravodaj.madaj.net (s http). netušíš ? vím, že to je mimo téma :-) ps-koukám, že http://www.spravodaj.. také nejede…

  2. rony píše:

    [1] neviem a neviem, ci to netreba skor nastavit v DNS a v Apache.

  3. 2ge píše:

    [1] to s mod_rewritom az tak vela nema. Zalezi ako to chces spravit (co je default adresa), ci s www, alebo bez www. Najjednoduchsie a najhorsie riesenie je pouzivat obidve, to znamena ze definujes ServerAlias v httpd.conf
    + mod rewrite riesenie:
    RewriteCond %{HTTP_HOST} !^www.opensubtitles.org
    RewriteRule ^(.*) http://www.opensubtitles.org$1 [L,R=301,QSA]
    (inymi slovami ak nieco nezacina na http://www.opensubtitles.org presmeruj ho tam)
    + uzitocny mod_rewrite:
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
    RewriteRule ^/(.*)$ /index.php?q=$1 [L,QSA]
    ak ziadany subor neexistuje, tak ho presmeruj na index.php
    Pre LightHTTP sa to riesi inak.