Fórum Root.cz

Hlavní témata => Server => Téma založeno: Pleca 11. 04. 2014, 14:42:56

Název: Apache a přesměrování při neexistujícím souboru
Přispěvatel: Pleca 11. 04. 2014, 14:42:56
Zdravim vsechny
Prosim o radu, mam ve virtualboxu debian 6 server s apache2. V prohlizeci si normalne pres ip zobrazim index.php daneho uzivatele:

192.168.0.2/~user/index.php

Vytvorim si soubor .htaccess:

Kód: [Vybrat]
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.+)$ index.php

Takze kdyz adresar nebo soubor neexistuje, presmeruje se na index.php. Problem je, ze pokud zadam napr. 192.168.0.2/~user/kocka/, tak nejsem presmerovan na:

192.168.0.2/~user/index.php

misto toho dostanu chybu:

Not Found
The requested URL /home/user/public_html/index.php was not found on this server.

Z jakeho duvodu jsem presmerovan do home?? Da se nekde nastavit abych byl presmerovan spravne??

Dekuji za odpovedi
Název: Re:.htaccess
Přispěvatel: Filip Jirsák 11. 04. 2014, 15:36:51
Nejste přesměrován do /home, jste přesměrován na adresu http://192.168.0.2/~user/index.php. Adresy začínající tildou a jménem uživatele ale Apache (respektive mod_userdir (http://httpd.apache.org/docs/2.4/mod/mod_userdir.html)) zpracovává speciálním způsobem – pokusí se v domácím adresáři daného uživatele najít nakonfigurovaný adresář (ve vašem případě public_html) a v něm pak cestu, která je uvedená za uživatelským adresářem v HTTP požadavku.

Cesta /home/user/public_html/index.php tedy není adresa, kam by vás server přesměrovával, ale cesta k souboru na disku, který se Apache pokouší přečíst. Pokud UserDir nechcete používat, vypněte ho. Ale pokud ho nechcete používat a neznáte jej, nechápu, jak vás napadlo použít zrovna tu adresu /~user

S .htaccess ani s přesměrováním to tedy nijak nesouvisí.
Název: Re:.htaccess
Přispěvatel: Pleca 11. 04. 2014, 16:15:03
Moc dekuji za vysvetleni. Zkusim se podivat na dokumentaci mod_userdir v odkazu od vas. Jenom mi nejde do hlavy, proc apache ten soubor nenasel, kdyz ta cesta k index.php je spravna a index.php se tam nachazi.
Název: Re:.htaccess
Přispěvatel: Filip Jirsák 11. 04. 2014, 17:16:40
Se soubory v domovském adresáři zachází Apache speciálním způsobem, a zrovna spouštění skriptů bude nejspíš ve výchozí konfiguraci zakázané.
Název: Re:Apache a přesměrování při neexistujícím souboru
Přispěvatel: RobertOS 11. 04. 2014, 20:45:16
Co takhle .htaccess -> ErrorDocument /stranka/na/kterou/presmerovat.html
Název: Re:Apache a přesměrování při neexistujícím souboru
Přispěvatel: Pleca 12. 04. 2014, 12:24:11
S ErrorDocument se to chova naprosto stejne = Not Found. At je to soubor php nebo html, vzdy to vyhodi stejnou chybu a jsem si 100% jisty, ze ty soubory tam jsou. :(
Název: Re:Apache a přesměrování při neexistujícím souboru
Přispěvatel: Filip Jirsák 12. 04. 2014, 12:45:18
Máte správně nastavená práva? Není v logu Apache napsáno něco víc?
Název: Re:Apache a přesměrování při neexistujícím souboru
Přispěvatel: Pleca 12. 04. 2014, 13:45:32
V Apache error logu to zahlasi error File does not exist: /var/www/home. Jestli to dobre chapu, hleda to tu cestu /home/user/public_html/ ve /var/www, coz je spatne. Rekl bych, ze mam usedir.conf v mods-enabled nastaven spravne:

Kód: [Vybrat]
<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride All
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>
</IfModule>

Prava k public_html jsou 755 a vlastnik/skupina je user/www-data.

Dekuji za pomoc.