Apache a přesměrování při neexistujícím souboru

Pleca

Apache a přesměrování při neexistujícím souboru
« kdy: 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
« Poslední změna: 11. 04. 2014, 20:03:39 od Petr Krčmář »


Re:.htaccess
« Odpověď #1 kdy: 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) 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í.

Pleca

Re:.htaccess
« Odpověď #2 kdy: 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.

Re:.htaccess
« Odpověď #3 kdy: 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é.

RobertOS

Re:Apache a přesměrování při neexistujícím souboru
« Odpověď #4 kdy: 11. 04. 2014, 20:45:16 »
Co takhle .htaccess -> ErrorDocument /stranka/na/kterou/presmerovat.html


Pleca

Re:Apache a přesměrování při neexistujícím souboru
« Odpověď #5 kdy: 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. :(

Re:Apache a přesměrování při neexistujícím souboru
« Odpověď #6 kdy: 12. 04. 2014, 12:45:18 »
Máte správně nastavená práva? Není v logu Apache napsáno něco víc?

Pleca

Re:Apache a přesměrování při neexistujícím souboru
« Odpověď #7 kdy: 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.