abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 00:55 | Pozvánky

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 209. brněnský sraz, který proběhne tento pátek 16. května od 18:00 ve studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Jelikož se Brno stalo jedním z hlavních míst, kde se vyvíjí open source knihovna OpenSSL, tentokrát se OpenAlt komunita potká s komunitou OpenSSL. V rámci srazu Anton Arapov z OpenSSL

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 00:22 | Komunita

    GNOME Foundation má nového výkonného ředitele. Po deseti měsících skončil dočasný výkonný ředitel Richard Littauer. Vedení nadace převzal Steven Deobald.

    Ladislav Hagara | Komentářů: 2
    10.5. 15:00 | Zajímavý článek

    Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.

    Ladislav Hagara | Komentářů: 12
    9.5. 17:22 | Nová verze

    Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.

    Ladislav Hagara | Komentářů: 4
    9.5. 15:22 | Komunita

    Google zveřejnil seznam 1272 projektů (vývojářů) od 185 organizací přijatých do letošního, již jednadvacátého, Google Summer of Code. Plánovaným vylepšením v grafických a multimediálních aplikacích se věnuje článek na Libre Arts.

    Ladislav Hagara | Komentářů: 0
    8.5. 19:22 | Nová verze

    Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    8.5. 18:00 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.

    Ladislav Hagara | Komentářů: 0
    8.5. 01:22 | Nová verze Ladislav Hagara | Komentářů: 0
    8.5. 00:55 | Zajímavý projekt

    PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.

    vlk | Komentářů: 0
    7.5. 19:44 | Nová verze

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    Jaký filesystém primárně používáte?
     (57%)
     (1%)
     (8%)
     (22%)
     (4%)
     (2%)
     (3%)
     (1%)
     (1%)
     (3%)
    Celkem 585 hlasů
     Komentářů: 26, poslední 8.5. 09:58
    Rozcestník

    Dotaz: apache2 mod_rewrite

    26.7.2012 16:22 kei.101
    apache2 mod_rewrite
    Přečteno: 332×
    Dobrý den.

    Už půl dne tu koumám jak správně použít mod_rewrite pro daný problém a nedaří se mi, tak bych rád poprosil o radu někoho zkušenějšího. Řeším toto:

    Potřeboval bych do .htaccess vložit mod_rewrite pravidla tak, aby pro cestu ^([^/]+)(.*)$ platilo: 1] Pokud v daném adresáři existuje podadresář nebo soubor s názvem $1, tak se nestane nic.. soubor se běžně obslouží 2] ..jinak pokud v daném adresáři existuje soubor $1.wsgi, přepíše se cesta na $1.wsgi$2 3] ..jinak se cesta přepíše na index.wsgi$1$2

    Pro názorný příklad, mám li adresářovou strukturu: / /index.wsgi /test.wsgi /pokus/ /pokus/index.wsgi

    Pak se bude přepisovat takto: '/' -> index.wsgi /a/b/c -> index.wsgi/a/b/c /test -> test.wsgi /test/a/b/c -> test.wsgi/a/b/c /pokus/a/b/c -> /pokus/index.wsgi/a/b/c

    Ten poslední krok je možné obsloužit rekurzivně, tj. v adresáři /pokus bude opět .htaccess

    Díky za pomoc

    JN

    Odpovědi

    27.7.2012 09:12 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: apache2 mod_rewrite
    Takhle nějak?
    RewriteCond $1 -d [OR]
    RewriteCond $1 -f
    RewriteRule ^([^/]+)(.*)$ - [L]
    
    RewriteCond $1.wsgi -f
    RewriteRule ^([^/]+)(.*)$ /$1.wsgi$2 [L]
    
    RewriteRule ^([^/]+)(.*)$ /index.wsgi$1$2 [L] 
    
    27.7.2012 13:14 kei.101
    Rozbalit Rozbalit vše Re: apache2 mod_rewrite
    Už jsem to vyřešil, ale koukám, že dost podobně až na několik věcí:
    • Nevěděl jsem o flagu [OR], takže to první pravidlo mám nadvakrát :)
    • Ten druhý a třetí odstavec bohužel nefunguje bez RewriteBase a cesty do adresáře, protože to používám v .htaccess v rámci UserDir...
    Protože nelze použít proměnné úplně kdekoli v apache configu, napsal jsem si skript na generování požadovaného textu pro .htaccess libovolného adresáře:
    #!/bin/sh
    
    : ${USER:=$(whoami)}
    : ${DOC_ROOT:=/home/$USER/http}
    : ${DIR:=$(pwd)}
     
    rel_dir=${DIR#$DOC_ROOT}
    if [ "$rel_dir" == "$DIR" ]; then
        echo "Directory not in user document root!" >&2
        echo "DOC_ROOT: $DOC_ROOT" >&2
        echo "DIR: $DIR" >&2
        exit 1
    fi
     
    echo 'RewriteEngine On'
    echo 'RewriteCond %{REQUEST_FILENAME} -f' [OR]
    echo 'RewriteCond %{REQUEST_FILENAME} -d'
    echo 'RewriteRule .* - [L]'
    echo "RewriteCond $DIR/\$1 -f"
    echo 'RewriteRule ^([^.]+\.wsgi).* - [L]'
    echo
    echo "RewriteBase /~$USER$rel_path/"
    echo "RewriteCond $DIR/\$1.wsgi -f"
    echo 'RewriteRule ^([^/]*)(.*)$ $1.wsgi$2 [L]'
    echo 'RewriteRule ^(.*)$ index.wsgi/$1 [L]'
    
    # EOF
    
    27.7.2012 15:22 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: apache2 mod_rewrite
    V tom druhém a třetím případě by určitě bylo možné použít relativní cesty, já jsem použil vzor, který jste měl v dotazu.
    27.7.2012 18:52 kei.101
    Rozbalit Rozbalit vše Re: apache2 mod_rewrite
    No mě právě ta relativní cesta nějak nefungovala :( Rád bych to udělal bez těch absolutních cest, kdybych věděl jak.. Vždycky se mi to přepsalo na cestu ve filesystému a pak mi to napsalo, že na serveru taková cesta neexistuje.. tak teď to přepisuju na cestu http requestu, tedy ~username/... místo /home/username/http/... Každopádně díky za odpověď a všechna čest to takhle z fleku dát dohromady :) Minimálně ten OR flag mi přišel vhod :)
    27.7.2012 21:15 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: apache2 mod_rewrite
    mod_rewrite pracuje s cestou požadavku, tj. přepisovat to na /~username/ a ne /home/username/http/ je správně. Problém ale může být v tom, že ty cesty nevedou na dokumenty v DocumentRoot, na to je v Apache nějaké omezení.

    Z fleku to rozhodně nebylo, inspiroval jsem se v dokumentaci mod_rewrite.
    27.7.2012 18:55 kei.101
    Rozbalit Rozbalit vše Re: apache2 mod_rewrite
    Navíc jsem ještě během pokusů zjistil, že mi přijde vhod, že když někde v requestu (nejen na konci) je (.*)\.wsgi, tak ten pořadavek nepřepisovat.. a tak v tom pravidlu taky potřebuju znát nějakou cestu ve filesystému bohužel.. ale ten skript na generování teď funguje přesně, jak potřebuji a vygeneruje mi .htaccess pro libovolný adresář, aniž bych musel ručně dopisovat nějaké cesty, takže mi to stačí :)

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.