2012-12-09 3 views
1

J'ai créé un fichier .htaccess qui permet d'utiliser des URL personnalisées. Cependant, je ne suis plus en mesure de taper www.website.com sans taper le fichier d'index. C'est à dire. Je dois taper www.website.com/index.php pour voir la page d'accueil. Voici à quoi ressemble mon fichier .htaccess:Le fichier .htaccess ne reconnaît pas index.php

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 
RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC] 

Quelqu'un sait-il comment résoudre ce problème? Merci à tous!

+0

Est-ce le fichier '.htaccess' sur la racine du document' www.website.com' de l'hôte? –

Répondre

4

La façon dont vous avez défini votre règle a augmenté la complexité.

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 

Au-dessus de la règle signifie si le nom de fichier est un répertoire de processus de fichier tel qu'il est. après que ne pas traiter plus loin.

RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC] 

Cette règle signifie map toute uri demande à profile.php?u=

Maintenant, lorsque vous demandez / qui est www.website.com il vérifie la première règle et il ne correspond pas. Ensuite, il vérifie la deuxième règle et la mappe à profile.php?u=.

  1. Une façon de le fixer, serait chèque * si $_GET['u'] est vide ou / dans profile.php. Si c'est le cas, chargez le index.php.
  2. Une autre façon consiste à trouver une expression régulière appropriée pour vos noms d'utilisateur une fois trouvé l'utiliser ici.

    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(USERNAME_REGEX)$ http://www.website.com/profile.php?u=$1 [NC,L] 
    

La meilleure façon de gérer cela est en utilisant PHP,

RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /index.php?uri=$1 [L] 

Maintenant index.php va obtenir tous les uri que vous passez. Vous pouvez maintenant traiter l'URI au index.php.

2

Cela peut être dû à la configuration de votre serveur. Essayez DirectoryIndex index.php (voir http://davidwalsh.name/directory-index-homepage-htaccess)

Modifier (en raison de ne pas me lire correctement à la question en premier lieu)

Avez-vous essayé sans RewriteRule. * - ligne [L]?

+0

Si c'était le cas. www.website.com n'aurait pas fonctionné avant d'avoir ajouté le .htaccess mais il dit clairement qu'il ne fonctionne plus. – Codeguy007

+0

Mes excuses, le manque de concentration frappe à nouveau. L'avez-vous essayé sans la ligne 'RewriteRule. * - [L]'? – qooplmao

+0

si vous réparez votre réponse. Je vais supprimer le vote négatif. – Codeguy007

Questions connexes