Comment redirect vers la page d’accueil si aucun motif ne correspond dans .htaccess

Amis Je suis un débutant à .htaccess et Rewrite Rule et très insortinggué par ces règles. J’essaie d’exécuter les lignes suivantes pour la page index.php. Lorsque j’écris dans url, un ou deux ou trois ou quatre arguments de requête, ça va bien. N’importe lequel de ces motifs correspond à la collecte de la requête et continue en PHP. Mais lorsque les arguments de la requête dépassent plus de quatre arguments (par exemple, quelqu’un essayant intentionnellement de donner des URL incorrectes), je souhaite redirect la page vers la page d’accueil. Je n’ai trouvé aucune solution sur Internet. Quelqu’un peut-il m’aider, comment faire cela. Je souhaite désespérément une solution pour réaliser ce projet et un besoin urgent. Je lis de nombreux articles mais ne comprend pas comment gérer ce problème. Je suis en train d’exécuter toutes ces tâches avec XAMPP sur Win 7. Les modèles que j’utilise sont,

RewriteRule ^ ([a-zA-Z0-9 _] +) /? $ Index.php? Levelone = $ 1 [NC]

RewriteRule ^ ([a-zA-Z0-9 _] +) / ([a-zA-Z0-9 _] +) /? $ Index.php? Levelone = $ 1 & leveltwo = $ 2 [NC]

RewriteRule ^ ([a-zA-Z0-9 _] +) / ([a-zA-Z0-9 _] +) / ([a-zA-Z0-9 _] +) /? $ Index.php? Levelone = $ 1 & leveltwo = $ 2 & levelthree = $ 3 [NC]

RewriteRule ^ ([a-zA-Z0-9 _] +) / ([a-zA-Z0-9 _] +) / ([a-zA-Z0-9 _] +) / ([a-zA-Z0-9_ ] +) /? $ index.php? llevelone = $ 1 & leveltwo = $ 2 & levelthree = $ 3 & levelfour = $ 4 [NC]


Exemple d’URL: (disons localhost / myproject / index.php est ma page d’accueil)

localhost / myproject / levelone /

localhost / myproject / levelone / leveltwo /

localhost / myproject / levelone / leveltwo / levelthree /

localhost / myproject / levelone / leveltwo / levelthree / levelfour

Quand j’utilise ces quatre URL, ça va, mais si j’utilise

localhost / myproject / index.php / levelone / leveltwo / levelthree / levelfour / levelfive / levelsix /

alors ma page index.php retourne du HTML sans style ni disposition, j’essaie beaucoup de types de RewriteCond et de commandes dans .htaccess mais tout est en vain.

Je veux que les arguments de la chaîne de requête soient compris entre 1 et 4 si elle dépasse la plage, à savoir que cinq arguments doivent ensuite être redirigés vers la page d’accueil (/index.php). Il serait utile que quelqu’un sache s’il existe un moyen de combiner tous ces quatre motifs longs en une seule ligne pour associer l’un des quatre.

Cette règle de réécriture ne sera lancée que s’il n’existe pas de fichier ou de répertoire.

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . /path/to/index.php [L,QSA] 

L’option -f fera que la réécriture ne sera lancée que si le fichier n’existe pas, et l’option -d assurera que la réécriture ne sera pas lancée si un répertoire existe.

Je suggère d’éviter une redirection vers la page d’accueil. Dans index.php, affichez le contenu de la page d’accueil par défaut si aucune variable de niveau n’est définie.

Voici une règle à une ligne (peut-être peut-on simplifier encore plus):

 RewriteRule ^(?:([a-zA-Z0-9_]+)\/)?(?:([a-zA-Z0-9_]+)\/)?(?:([a-zA-Z0-9_]+)\/)?(?:([a-zA-Z0-9_]+)\/)?$ index.php?level1=$1&level2=$2&level3=$3&level4=$4 [L] 

Et le PHP:

 $levels=array(); foreach (range(1,4) as $i) { if (isset($_GET['level'.$i])) {$levels[$i]=$_GET['level'.$i];} } if (!empty($levels)) { // show level content } else { // show home page }