comment réécrire la règle & # 8221; pour un sous-sous-répertoire? .htaccess / php
-
06-07-2019 - |
Question
J'ai un dossier nommé test situé à l'adresse www.mydomain.com/abc/files/test. Je dois modifier les URL à partir de www.mondomaine.com/abc/files/test/test.php?id=15&key=some-text123
vers www.mydomain.com/abc/files/test/15/some-text123
cela est similaire aux URL SO.
J'ai essayé de suivre le fichier .htaccess avec le code suivant
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^test/([0-9]+)/([A-Za-z0-9-]+)?$ test/test.php?id=$1&key=$2 [R]
Cela me redirige vers www.mondomaine.com/test/test.php?id=15&key=some-text-123
mais cela n'a pas fonctionné car j'ai copié le format quelque part. Je ne suis pas sûr que ^ devrait inclure la partie www également ou suppose-t-il simplement / en tant que root?
Le " id " une partie est importante pour moi. Je considérerai également les suivants comme des URL valides.
www.mydomain.com/abc/files/test/15 (without /some-text123")
www.mydomain.com/abc/files/test/15/ (without /some-text123 but having / )
Pouvez-vous m'aider à écrire la règle correcte?
Comment puis-je faire en sorte que je n'ai pas à coder en dur & abc / files / " ?
Cela ne devrait affecter aucune des autres URL de mon site (que le dossier "test".)
De même, l'URL doit rester identique ( / files / test / 15 etc
) au lieu de passer à "? id = 15 & amp; key = some-text123 "
Merci beaucoup.
La solution
Le R
indicateur force une redirection externe. Il suffit donc de le laisser de côté et la demande sera redirigée en interne:
RewriteRule ^test/([0-9]+)/([A-Za-z0-9-]+)?$ test/test.php?id=$1&key=$2