Fórum Root.cz
Hlavní témata => Server => Téma založeno: 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:
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
-
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í.
-
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.
-
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é.
-
Co takhle .htaccess -> ErrorDocument /stranka/na/kterou/presmerovat.html
-
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. :(
-
Máte správně nastavená práva? Není v logu Apache napsáno něco víc?
-
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:
<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.