Rewrite with regex

Artur nginx at netdirect.fr
Mon Apr 12 10:02:32 UTC 2021


This seems to work :

rewrite "^/((?:[a-zA-Z0-9]+(?:[-][a-zA-Z0-9])*)+)$"
/index.php?short_name=$1 last;

However, I suppose there is no way to check the size of $1 here.

Le 12/04/2021 à 11:30, Artur a écrit :
> Hello !
>
> I have the following setup :
>
> location / {
>  try_files $uri $uri/ @shortnames;
> }
> location @shortnames {
>  rewrite "^/([a-zA-Z0-9]{1,32})$" /index.php?short_name=$1 last;
>  return 404;
> }
>
> I filter the 'shortnames' URI to have a format similar to /dfg6df4g64
> with minimum and maximum size, only digits and letters allowed. Working
> well.
>
> I want to add hyphen in the 'shortnames' so /ad5-ff56 or
> /5f9-dfdf4-55f-ddfg are allowed ( but not /-ff4fg or /dgfgdf- ).
> The regex that matches these conditions is something like (without the
> size match) : ^/([a-zA-Z0-9]+([-][a-zA-Z0-9])*)$
> However there is no match and rewrite fails.
>
> My current setup is a Debain 10 server with nginx-full (14.2.2) installed.
>
> Any idea on how I can solve this problem, please ?

-- 

Best regards,
Artur



More information about the nginx mailing list