Portál AbcLinuxu, 14. května 2025 04:49
bash/cgi skript mi krom jiného generuje jednoduchý html dokument, který obsahuje i odkaz na soubor s výsledky
Můj problém je, že mi apache k odkazu na soubor přidává prefix v podobbe /cgi-bin/ takže se k souboru nedostanu. Víte někdo čím to může být? Už mě to stálo odpoledne a stále nevím. Děkuju
v /var/www/localhost/htdocs
je formulář kterým se spouští skript v /var/www/localhost/cgi-bin
skript vygeneruje výsledek /var/www/localhost/htdocs/vysledek/xxxx/soubor.txt
xxxx je vytvořený pomocí mktemp. Pomoci sedu dostavam onenen problmaticky odkaz: href=vysledek/xxxx/soubor.txt>vysledek
jenže apache mi při zobrazení vygenerovane stranky změní odkaz na href=/cgi-bin/vysledek/xxxx/soubor.txt>vysledek
/var/www/localhost/htdocs/vysledek/xxxx/
cesta="`mktemp -d -p /var/www/localhost/htdocs/vysledky -t $(date +%s.XXXXXXX)`"
generovani odkazuecho "taga href="vysledky/$(echo $cesta | sed -e "s/\(.*\)vysledky\///g" | sed -e "s/\(.*\)bin\///g")/soubor.txt">vyslede tag/a"
cesta
jeste v prubehu skriptu pouzivam a generovani odkazu je az na konci
generovani odkazuspravne:
echo "taga href="vysledky/$(echo $cesta | sed -e "s/\(.*\)vysledky\///g" | sed -e "s/\(.*\)bin\///g")/soubor.txt">vyslede tag/a"
echo "taga href="/vysledky/$(echo $cesta | sed -e "s/\(.*\)vysledky\///g" | sed -e "s/\(.*\)bin\///g")/soubor.txt">vyslede tag/a"
href=/vysledek/xxxx/soubor.txt>vysledek
Vase reseni nefunguje protoze:
CGI je spusteno v adresari /cgi-bin/
a odkaz neco/neco.txt
je tedy chapan jako /cgi-bin/neco/neco.txt
Pokud Vam to neni jasne, urcite si poridte nejakou knizku o HTML, protoze toto je zcela zakladni vec
To mi doslo, ale nevim jak to obejit.A dokonce pokud se podivate do zdrojoveho kodu vygenerovane stranky s odkazem, bude to tam taky "dobre"! :))) Pricinou je absolutni/relativni URL a jeho chapani prohlizecem. Jak to vyresit? Poslete zdrojovy kod...
Pokud skript spustim v kozoli tak je odkaz spravne a ukazuje tam kam ma.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.