ugrás a tartalomhoz

Apache 2.2.4 + PHP + Rewrite

fchris82 · 2007. Jún. 2. (Szo), 15.31
Újra kellett rakni az egész gépet :( A problémám az, hogy újra rakva az Apache-ot és a PHP-t, nem akar működni RENDESEN a Rewrite.

Ide tartozó részlet a httpd.conf fájlból:

[...]
LoadModule rewrite_module modules/mod_rewrite.so
[...]
<Directory "D:/Apache/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
[...]
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "D:\\PHP5\\"
LoadModule php5_module "D:\\PHP5\\php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
A 'htdocs/proba' könyvtárban lévő .htaccess tartalma:

<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteBase /proba/

  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
A probléma:
  • http://localhost/proba/index.php --> működik
  • http://localhost/proba/lksdjflaskdjfa --> működik, a q-ban ott van a proba utáni rész
  • http://localhost/proba --> NEM MŰKÖDIK!
  • http://localhost/proba/ --> NEM MŰKÖDIK!

Az utóbbi két esetben FF alatt megjelenik a letöltő ablak az alábbi szöveggel:
Megnyitotta a következőt:
ami egy application/x-httpd-php
forrás: http://localhost

A "Megnyitotta a következőt:" után tényleg nincs semmi, nem én töröltem!
A htdocs könyvtárban is van egy .htaccess, ami ugyanolyan, mint ami a htdocs/proba-ban van, annyi különbséggel, hogy a RewriteBase csak egy '/' jel. Ez eddig viszont nem volt gond... Hol lehet a hiba :?
 
1

Másképp

janoszen · 2007. Jún. 2. (Szo), 17.07
Azért nem működik, mert -f azt jelenti, hogy nem talált fájl esetén. /proba/ esetén viszont VAN talált fájl, méghozzá az index.php. Ennek a lekezelése nagyon egyszerű, ha nincs Q beállítva, alapértelmezett értéket veszel.
2

:?

fchris82 · 2007. Jún. 2. (Szo), 23.05
ha nincs Q beállítva, alapértelmezett értéket veszel.

Hol? A php-ban? Ott alapértelmezett érték van, ha nincs q. Ez a dolog tökéletesen működött és működik most is a szerveren élesben. A probléma, hogy a saját gépemen most nem megy. Az Apache változott "azóta", tehát ott lehet a bibi. Vagy most arra gondoltál, hogy ott van, de akkor nem értem, hol kéne alapértelmezett értéket adni neki ÉS miért kínálja letöltésre a fájlt, ahelyett, hogy futtatná, mikor még a MIME típusát is helyesen állapította meg :-/