Apache ignoruje .htaccess

mathew7

Apache ignoruje .htaccess
« kdy: 02. 09. 2013, 19:17:21 »
Zdravím, fakt už neviem ako pokračovať, chcel som si nahodiť mod_rewrite na web serveri avšak som zistil, že mi celkovo server ignoruje .htaccess. V apache2.conf mám AccessFileName .htaccess, ďalej som nastavil aj :
<Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>
Skúšal som aj bez slashov, rôzne ináč zadať priečinok, / priečinok, chmod .htaccess je 644 a stále nič. Obsah .htaccess som na skúšku dal hocičo aby som videl či aspoň vyhodí chybu po načítaní webu ale nič sa nestalo. Bol by som vďačný za rady :)


lupex

Re:Apache ignoruje .htaccess
« Odpověď #1 kdy: 02. 09. 2013, 20:06:37 »
a2enmod rewrite ?  je modul rewrite zaveden v konfiguraci ?

mathew7

Re:Apache ignoruje .htaccess
« Odpověď #2 kdy: 02. 09. 2013, 20:16:20 »
Áno, aktivoval som ho, resetol httpd aj v apachectl beží. Taktiež som skúšal bez .htaccess priamo v apache2.conf nastaviť napr. jednoduchý rewrite,
RewriteEngine on
RewriteRule ^index.php$ stranka.xxx
alebo
Options +FollowSymLinks 
RewriteEngine On 
 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
 
RewriteRule ^clanky/(\d+)*$ ./profile.php?clanky=$1
a to mi v súbore nefungovalo, skúšal som to definovať aj v <Directory /var/www/> Rewrite... </Directory> aj v <IfModule mode_rewrite>...

mareolan

Re:Apache ignoruje .htaccess
« Odpověď #3 kdy: 02. 09. 2013, 22:29:52 »
Linux teraz nemám k dispozícii, ale čistá inštalácia Apache 2.2.25 + PHP 5.3.27 na Win 7 s touto konfiguráciou funguje v pohode (oproti tvojej verzii som tam iba pridal RewriteBase):

httpd.conf (pridané na koniec súboru):
Kód: [Vybrat]
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php"
LoadModule rewrite_module modules/mod_rewrite.so
<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs">
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  allow from all
</Directory>

Obsah "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs":
Kód: [Vybrat]
|- test
   |- .htaccess
   |- index.php
   |- stranka.php

Obsah test/.htaccess:
Kód: [Vybrat]
RewriteBase /test
RewriteEngine on
RewriteRule ^index.php$ stranka.php

Obsah test/index.php:
Kód: [Vybrat]
<?php echo "index.php"?>Obsah test/stranka.php:
Kód: [Vybrat]
<?php echo "stranka.php"?>
Do prehliadača dám http://localhost/test/index.php a vypíše sa mi "stranka.php".

Skontroloval by som:
1. Či si ten AllowOverride v <Directory> niekde inde neprepíšeš, príp. či sa ti neprepíše tým, že tam máš trebárs Include nejaka-dalsia-konfiguracia.conf.
2. Ak máš tú adresárovú štruktúru viacúrovňovú, napr. X/Y/Z a zapínaš ten AllowOverride pre X, tak si over, že ho potom niekde nevypínaš pre adresár X/Y, príp. X/Y/Z.
3. Ak nefunguje ani tak, tak by som ešte raz skontroloval práva na čítanie z FS. Samozrejme, každá zmena konfigurácie potrebuje reštart Apache. A samozrejme skontrolovať Apache log.
4. Ešte sa pozri, či nemáš niekde nejaký Rewrite, ktorým to na začiatku posielaš úplne niekam preč (kvôli tomu by to napr. vôbec nemuselo vliezť do tých tvojich adresárov).
5. Aby ti v .htaccess fungoval rewrite, tak musíš mať povolený FollowSymLinks (v ukážke máš), len si daj bacha na to, že to môžeš mať trebárs povolené pre Directory ale zakázané pre Location (a vezme sa nastavenie z Location) - viď mergovanie sekcií.

Čo sa týka nefunkčnosti mod_rewrite s tými 2 príkladmi, tak keďže si to dával priamo do apache2.conf, tak ti to fungovať nebude, lebo tam tá URL v RewriteRule vždy začína na lomítko (na rozdiel od .htaccess, kde nikdy nezačína na lomítko), t.j. v apache2.conf by ti malo zabrať toto:
Kód: [Vybrat]
RewriteEngine on
RewriteRule ^/index.php$ /stranka.xxx

fffffffffff

Re:Apache ignoruje .htaccess
« Odpověď #4 kdy: 03. 09. 2013, 08:26:13 »
skontrolujte si v konfiguracnom subore apache riadok

Kód: [Vybrat]
AccessFileName .htaccess
Toto tam musi byt.


majky3588

Re:Apache ignoruje .htaccess
« Odpověď #5 kdy: 03. 09. 2013, 19:19:58 »
Uf, tak nakoniec som to po dlhej dobe spojazdnil :) fakt diki moc, problém bol naozaj v konfigurácií, naspodu apache2.conf bol include sites-enabled/
a ten priečinok obsahoval nastavenie pre directories *80 a mali nastavené AllowOverride None. Takže keď som si v apache2.conf aj nastavil directory tak nastavilo podla toho priloženého súboru.