Activer les URL lisibles par l’homme dans .htaccess

Préface: Oui, cette question semble dupliquée et j’ai trouvé des questions connexes, mais les réponses ne m’ont pas aidé. 🙁

Bonjour, je souhaite append le support de l’URL lisible par l’homme pour mon projet PHP. Pour l’instant, ma chaîne de requête URL ressemble à ceci:

index.php?url=main/index 

Je voudrais que ça ressemble à ça:

 index.php/main/index 

J’ai lu les articles suivants:

Stackoverflow

Cheatsheet

Stackoverflow

Stackoverflow

Mais quand je fais ça:

 var_dump($_GET['url']); // get empty array 

, obtenez un tableau vide comme aucun paramètre d’url ajouté.

Mon actuel .htaccess :

 DirectoryIndex index.php Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^(.*)$ index.php?url=$1 [NC] 

quelqu’un peut m’aider s’il vous plait? Merci!

URL: http://domain.com/index.php/controller/action

URL réécrite: http://domain.com/index.php?url=controller/action

.htaccess

 DirectoryIndex index.php Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^index.php/(.*)$ /index.php?url=$1 [L,QSA] 

Explication:

Le ^index.php/(.*)$ .* ^index.php/(.*)$ modèle ^index.php/(.*)$ correspond à tout ce qui se trouve après index.php/ sur l’URL entrante. Les parenthèses permettent de capturer la pièce en tant que variable $1 , qui est ensuite ajoutée à la fin de l’URL de substitution /index.php?url= + $1 .

[L, QSA] : L ignore les autres règles de réécriture, si cela convient. QSA signifie append une chaîne de requête.

Tu as

 index.php?url=main/index 

Yuo veut réécrire (puis redirect l’utilisateur) vers ce

 index.php/main/index 

Qu’en est-il d’essayer cela?

 DirectoryIndex index.php Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} ^url=([az]+)/([az]+)$ RewriteRule ^.*$ http://mydomain.site/index.php/%1/%2 [R=302,L] 

R = 301 ou 302 dépendent de vos besoins

Sur cet exemple, je suppose que sur l’URL d’origine, il n’y a que des caractères az. Juste pour clarifier (en raison du fait que le processus est généralement inversé) de cette façon les utilisateurs seront redirigés, cette règle ne convertit pas les liens sur votre page.

En ligne
RewriteRule ^(.*)$ index.php?url=$1 [NC] Le (. *) Fait correspondre la partie de l’URL à ‘?’ où la requête commence.
Pour utiliser les valeurs transmises dans la requête, vous avez besoin de l’indicateur QSA. Means Query Ssortingng Append.

Si votre URL: http://www.abcd.com/index.php/abcd / …

 .htaccess RewriteEngine on RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

entrer la description de l'image ici Essayez le code ci-dessous, considéré uniquement pour index.php, vous pouvez le remplacer selon vos besoins. Faites moi savoir si vous avez besoin d’une aide supplémentaire.

 DirectoryIndex index.php Options +FollowSymLinks RewriteEngine ON RewriteBase / RewriteRule ^(index\.php)/([0-9a-zA-Z\/_-]{1,99}) index.php?url=$2 

Ce qui a fonctionné pour moi est: – C’est la seule chose que j’ai faite sur l’URL http://localhost/baba.php/abcd . et fichier .htaccess original

DirectoryIndex baba.php RewriteEngine ON RewriteBase / RewriteRule ^(baba\.php)*/([0-9a-zA-Z\/_-]{1,99}) baba.php?url=$2