Pour la première URL de la * partie du motif correspond à « site.com », mais pour la seconde URL elle correspond à « site.com /Bonjour le monde".
Si vous ne souhaitez pas autoriser plus d'un dossier, vous pouvez interdire des barres obliques dans la partie du motif qui correspond au nom de domaine:
^[^/]*/([a-z0-9,-]+)/([a-z0-9,-]+)\.html$
(Notez que je mets une barre oblique inverse avant la . période avant l'extension html une période correspond à un caractère, alors que \.
matchs seulement une période)
Edit:.
Si vous souhaitez autoriser les URL et utiliser « bonjour monde/test » comme dossier pour le second , autorisez des barres obliques dans la partie dossier:
^[^/]*/([a-z0-9,-/]+)/([a-z0-9,-]+)\.html$
Si vous voulez utiliser « bonjour-monde » comme dossier et « test/test » comme la page, laissez slash dans le nom du fichier partie:
^[^/]*/([a-z0-9,-]+)/([a-z0-9,-/]+)\.html$
Pour répondre à cette question, vous devez nous dire pourquoi la première URL est valide et non la seconde. –
Il existe des solutions infinies, quelle est la logique regex que vous voulez construire? –
Yup - solution triviale serait la regex '^ site \ .com/hello-world/test \ .html $'. Il correspond à la première mais pas à la deuxième URL. – MSalters