Utilisation de RewriteRules sur les chaînes de requête de la racine du domaine

J’essaie de réécrire les URL sur mon site (pour améliorer le référencement, c’est un site AJAX) pour qu’elles passent de

http://www.domain.co.uk/?section=home

http://www.domain.co.uk/?section=contact

à

http://www.domain.co.uk/home

http://www.domain.co.uk/contact

respectivement.

C’est la première fois que j’utilise .htaccess pour la réécriture, et je trouve que je finis par deviner mes expressions / copier des réponses à d’autres questions et essayer de les faire fonctionner.

Le plus proche que j’ai eu est d’adapter cette réponse ici

 RewriteEngine on RewriteCond %{THE_REQUEST} ^GET\ /\?(([^&\s]*&)*)section=([^&\s]+)&?([^\s]*) RewriteRule ^(.*)$ /section/%3?%1%4 [L,R=301] RewriteRule ^section/(.*) index.php?section=$1 [L] 

ce qui me donne le résultat

http://www.domain.co.uk/section/contact

Cependant, cela brise également tous mes autres liens et quitte le site sans CSS ou javascript, etc.

En outre, l’une des sections de mon site contient des URL qui ressemblent à ceci:

http://www.domain.co.uk/?section=blog&post=post-name-one

http://www.domain.co.uk/?section=blog&post=post-name-two

que je voulais réécrire pour

http://www.domain.co.uk/blog/post-name-one

http://www.domain.co.uk/blog/post-name-two

Cependant, je ne suis pas sûr de savoir comment aborder cela dans RegEx.

Quelqu’un pourrait-il aider à obtenir ce droit? S’il y a de bonnes références pour la rédaction de ces règles, je serais heureux de les entendre également. Jusqu’à présent, les choses que j’ai lues ont été utiles pour expliquer ce qui se passe, mais je n’ai pas encore pu écrire le mien.

Vous pouvez utiliser ces règles dans votre racine .htaccess:

 RewriteEngine on RewriteCond %{THE_REQUEST} \s/+\?section=([^\s&]+)&post=([^\s&]+) [NC] RewriteRule ^ /%1/%2? [R=302,L] RewriteCond %{THE_REQUEST} \s/+\?section=([^\s&]+) [NC] RewriteRule ^ /%1? [R=302,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([^/]+)/([^/]+)/?$ /?section=$1&post=$2 [L,QSA] RewriteRule ^([^/]+)/?$ /?section=$1 [L,QSA]