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=
.
- 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
.
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
.
Est-ce le fichier '.htaccess' sur la racine du document' www.website.com' de l'hôte? –