2013-03-09 3 views
3

MISE À JOUR: Problème résolu
Après plusieurs heures, j'ai enfin compris que le problème était dans l'autorisation de dossier (757 au lieu de 755).htaccess RewriteCond Problèmes -f

Bon sang, je me sens comme un imbécile, mais au moins, le problème est résolu :)

Merci à tous! J'ai un problème bizarre avec mon .htaccess et mod_rewrite. J'ai un problème bizarre avec mes .htaccess et mod_rewrite.

Actuellement, j'ai le .htaccess suivant sur ma racine:

Options +FollowSymLinks 
Options -MultiViews 

RewriteEngine On 

RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule . /index.php [NC,L] 

Le problème est:
Je veux être en mesure d'accéder à un fichier existant.

-à-dire: mysite.com/anydir/myfile.png -> ouvrir le anydir/myFile.png
- mysite.com/anydir/script.php -> ouvert anydir/script.php
- monsite .com/file.png -> file.png ouvert
- mysite.com/notadir/imnotafile -> réécrire

Mais, tout fonctionne sauf le deuxième point. J'ai un file.php dans mon dossier test, mais quand je le fais mysite.com/test/file.php, il continue de le réécrire, et il ne devrait pas ...

Qu'est-ce que je fais mal?

+0

Bienvenue dans Stack Overflow! (: –

+0

@GabrielSantos Merci :) –

+0

Je viens de tester votre .htaccess et ne vois pas cette réécriture. Peut-être que c'est un problème de mise en cache. –

Répondre

5

faire le tour est joué:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 

MISE À JOUR 1

A cette partie du code:

RewriteRule ^index\.php$ - [L] 

[L] Arrêter le processus de réécriture sont immédiatement applicables et ne pas plus règles. Ainsi,

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule . /index.php [NC,L] 

Ne sont pas interprétés.

MISE À JOUR 2:

Le serveur suivra les liens symboliques:

Options +FollowSymLinks 

Le serveur désactivera vues multiples:

Options -MultiViews 

moteur Réécrire sera activé:

RewriteEngine On 

répertoire de base pour rewrite sera /:

RewriteBase/

Si la demande correspond à un fichier non existant, continuer:

RewriteCond %{REQUEST_FILENAME} !-f 

Si la demande correspondant à un répertoire non existant, continuer:

RewriteCond %{REQUEST_FILENAME} !-d 

Réécrivez à index.php, dans un cas non sensible, et arrêtez l'exécution des règles suivantes:

RewriteRule index.php [NC,L] 

Alors, essayez le suivi:

Options +FollowSymLinks 
Options -MultiViews 

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule index.php [NC,L] 
+0

Il a toujours le même problème :( –

+0

@HenriqueMouta Voir la réponse mise à jour –

+0

Essayé, toujours réécrire les fichiers .php (mais tous les autres types de fichiers ne sont pas réécrits) –

-1

Si vous voulez juste pour se débarrasser de l'erreur 404, vous pouvez utiliser

ErrorDocument 404 index.php 

Si vous voulez réécrire tous les répertoires, je suppose vous devriez enlever;

RewriteCond %{REQUEST_FILENAME} !-d 
+0

'RewriteCond% {REQUEST_FILENAME}! -d' = Si la requête n'est pas un répertoire existant, continuez et le problème est:' I veux être en mesure d'accéder à un fichier existant. »(qui peut inclure des répertoires) –

+0

Ah jeah désolé, je suis confus par un autre poste similaire avec .htaccess xD – Wolfii

+0

Exactement @GabrielSanto s. –