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):
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":
|- test
|- .htaccess
|- index.php
|- stranka.php
Obsah test/.htaccess:
RewriteBase /test
RewriteEngine on
RewriteRule ^index.php$ stranka.php
Obsah test/index.php:
<?php echo "index.php"; ?>
Obsah test/stranka.php:
<?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:
RewriteEngine on
RewriteRule ^/index.php$ /stranka.xxx