Apache-nak rewrite szabály Python weboldalhoz

Fórumok

Sziasztok.

Meg kellene oldanom a következőt:

Adott egy mappa, ezen belül fájlok, meg egy index.py

Namármost. Ha az adott file nem létezik, akkor dobjon engem át a index.py-hoz méghozzá úgy, hogy csak az utolsó perjel UTÁNI részt illeszti hozzá az "index.py/" címhez. Azaz valami hasonló kellene mint amit a drupal csinál, csak ugye asszem úgy van, hogy ez a PHP-nál automatikus, a python-nál nem.

A Pythonnál van még egy olyan is, hogy kiterjesztés nélkül is megtalálja a fájlt, szeretném ezt a funkciót is megőrizni ha lehet.

Kérdésem egyrészt az, hogy hogyan lehet ezt megoldani, másrészt az, hogy meg lehet-e úgy oldani, hogy a szabályokban nem történik említés a site valódi helyét illetően.
Miért: a site jelenleg egy fejlesztői helyen van, és szeretném 1:1 mozgatni a célhelyre, újrabeállítás nélkül.

Ja, és ha valaki tud magyar nyelvű mod_rewrite doksit, akkor dobjon egy RTFM linket, lécci. Tudom, tanuljak meg angolul. Igyekszem. De mégis.

Előre is kösz

Hozzászólások

gondolom nem mod_python-t hasznalsz,
mert a mod_python eseteben mindig
az index.py fut le, vagyis amit a httpd.conf-ban
beallitottal

a httpd.conf idevago resze:


        <Directory /usr/local/www/framework>
                AddHandler mod_python .py
                PythonHandler index
                PythonDebug On
                PythonPath "sys.path + ['/usr/local/www/framework']"
        </Directory>

pl:
1. http://framework.localhost
2. http://framework.localhost/index.py
3. http://framework.localhost/geza.py - ilyen file nincs az adott konyvtarban

mindegyik url eseteben az index.py fut le

/* bocs az esetleges helyesirasi hidakert */

De, mod_python-t használok. A következő a konkrét bajság:

A UserDir-en belül van ott nincs konfig.

A /etc/apache/modules.d/16mod_python.conf ilyes kinézetű:


<IfDefine PYTHON>
  <IfModule !mod_python.c>
    LoadModule python_module    modules/mod_python.so
  </IfModule>
</IfDefine>

<IfModule mod_python.c>
<Files ~ "\.py$">
        SetHandler mod_python
        PythonHandler mod_python.publisher
        PythonDebug On
</Files>

<Files ~ "\.psp[_]?$">
        SetHandler mod_python
        PythonHandler mod_python.psp
        PythonDebug On
</Files>

AddDirectoryIndex index.py
</IfModule>

Ezen felül gyak. semmi konfigom nincs, tekintve hogy a dolog a UserDir-en belül (http://serverke.mittu.domain.hu/~user/mappa) fut.

Ergo az szeretném, ha a http://serverke.mittu.domain.hu/~user/mappa/test URL-re a http://serverke.mittu.domain.hu/~user/mappa/index.py/test hívódna meg.

Nekem a mod_python nem csinálja meg. Ezek szerint akkor próbáljam azt amit a vhost konfigjába írtál berakni a .htaccess-ba?

Bocs, de az Apache oldalát annyira még nem ismerem a dolgonak...

Ja, amit elfelejtettem írni: jó lenne, ha ez valahogy mappán belül futna, mert nem biztos, hogy a leendő tárhelyszolgáltatónál én írhatom a vhostom konfigját.

bocs, ugy nez ki felreertettelek
a
http://serverke.mittu.domain.hu/~user/mappa/test
formara nekem sem az index.py fut le, kapok egy 404-et
viszont a
http://serverke.mittu.domain.hu/~user/mappa/test.py-vel
az index.py a befuto
az nem lenne megfelelo ha a test ele egy ?-et irnal?
http://serverke.mittu.domain.hu/~user/mappa/?test

eljatszadozok a mod_rewrite-val, ha valamire jutottam
akkor szolok
/* bocs az esetleges helyesirasi hidakert */

Van ? is, arra az index.py index(req) metódusa fut le.

Azért kellene ez a / jeles dolog, mert az index.py/test kérésre a test(req) függvény fut le, és ez lenne egyes oldalakál a formok POST handlere.

Pont ezért kellene csak az utolsó / jel utáni rész, mert ekkor a
http://serverke.mittu.domain.hu/~user/mappa/test?action=do kérésre valójában a
http://serverke.mittu.domain.hu/~user/mappa/index.py/test?action=do szolgálódna ki.

Ebből látszik még egy dolog: a query string is kell.

:Persze

Nalam mindenfelekeppen az index.py-ben levo handler fuggveny fut le
miert?
te Handler-kent a mod_python.publisher-t hasznalod
en meg az index.py-ben definialt handler fuggvenyt hasznalom
es az atadott parameterek alapjan hivogatom a tovabbi
osztalyokat/fuggvenyeket

egyebkent, ahogy te is irtad a mod_rewrite vonalon kellene
elindulni ;)
/* bocs az esetleges helyesirasi hidakert */

Igen, csak nem akarok egyrészt mindent egy függvényen keresztül nyomni, mert arra ott lenne amúgy is a index(), hanem külön meghívést akarok.

A szabályt kipróbálom.

Szerk.: Éééés igeeeen! Sikerült. A szabályokhoz a RewriteBase-t be kellett állítani, de nem volt a siker feltétele a dinamikus átírás.

Very, Very THX.