0

I'm trying to create a redirect rule that matches the following urls:

en/property/rotterdam/apartment/lorem-ipsum-dolor-sit-amet/v-9/
en/property/rotterdam/apartment/lorem-ipsum-dolor-sit-amet/9/
en/property/rotterdam-centrum/appartment/lorem-ipsum-dolor-sit-amet/9
en/property/lorem-ipsum-dolor-sit-amet-9/
en/property/lorem-ipsum-dolor-sit-amet/v9/
en/property/lorem-ipsum-dolor-sit-amet/v-9/
en/property/lorem-ipsum-dolor-sit-amet/v-9
en/property/rotterdam/apartment/branch/lorem-ipsum-dolor-sit-amet-9/
en/property/rotterdam/lorem-ipsum-dolor-sit-amet-9/
en/property/rotterdam/lorem-ipsum-dolor-sit-amet-9434343/
en/property/rotterdam/apartment/lorem-ipsum-dolor-sit-amet/v-243249/
en/property/rotterdam/apartment/lorem-ipsum-dolor-sit-amet/v2342349/
en/property/rotterdam/apartment/lorem-ipsum-dolor-sit-amet/243249/
en/property/rotterdam/apartment/lorem-ipsum-dolor-sit-amet/v-9/
en/property/rotterdam/apartment/lorem-ipsum-dolor-sit-amet/v-9/?test=1
en/property/rotterdam/apartment/lorem-ipsum-dolor-sit-amet/v-9/test/one/?success=3
en/property/rotterdam/apartment/2-rooms/lorem-ipsum-dolor-sit-amet/v-9/blah/1234/blahh/55555/?sass=123
en/property/rotterdam/appartment/lorem-ipsum-dolor-sit-amet/9234234
en/property/rotterdam/lorem-ipsum-dolor-sit-amet/9234234
en/property/lorem-ipsum-dolor-sit-amet/9234234
en/property/9234234
en/property/rotterdam/appartment/lorem-ipsum-dolor-sit-amet/9/test/132?algo=123

All urls that need to be match can be seen here
https://regex101.com/r/4TPEhy/1

I'm facing two issues, first one is that two urls are not matching:

en/property/rotterdam/apartment/2-rooms/lorem-ipsum-dolor-sit-amet/v-9/blah/1234/blahh/55555/?sass=123
en/property/9234234

And the second one, something on that regex is causing an interal redirect error.

This is my regex (the best case that I got so far)

^(en\/)?property\/[A-Яa-я0-9\-_\/]+?([\d]+)(.*)$

And this is my rewrite rule

RewriteRule ^(en\/)?property\/[A-Яa-я0-9\-_\/]+?([\d]+)(.*)$ $1properties/property/$2$3&%{QUERY_STRING} [NC,L]

The regex seems to be working fine on the tool (regex101), but as soon as a try to refresh the page applying that rule I get a 500 - Internal Server Error.

I need to match all the cases, I've tried different combinations for hours, but I'm missing something that's causing those issues.

On the .htaccess the groups that I need are $2 and $3, since $2 contains the property ID which I'm using on my script and $3 is all the rest of the URL like any other extra parameter or the query string.

The reason for so many different configurations is that users can set their own URL format, but limited to the options listed above.

This is an extract from the apache logs when this URL is requested

https://localhost/en/property/rotterdam/apartment/lorem-ipsum-dolor-sit-amet/v-9/test/132?blah=123

Logs

php74         | [Mon May 31 12:19:12.375537 2021] [rewrite:trace3] [pid 64] mod_rewrite.c(483): [client 172.18.0.1:63664] 172.18.0.1 - - [localhost/sid#7fd3d4ab1958][rid#7fd3d29d73c0/initial/redir#10] [perdir /var/www/html/] add per-dir prefix: en/properties/property/9/test/132&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123 -> /var/www/html/en/properties/property/9/test/132&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123&blah=123
Lucas
  • 101
  • 1
  • What is the URL you are wanting to rewrite the request to? (The _substitution_ string you are using "looks" wrong.) What other directives do you have in your `.htaccess` file (how is the request ultimately being routed)? Any particular reason you want to do this in a single rule (regex)? Since you've used `A-Я` in your regex I assume your actual URLs use a far greater range of characters than the example URLs you've posted? That itself _could_ be an issue. `A-Яa-я` is a massive range/overlap and is the same as `A-я`. – MrWhite May 31 '21 at 15:29
  • @MrWhite the substitution string is properties/property/{property_id}/{anything else}. The htaccess file doesn't have any other special thing, and A-Яa-я is being used to support other languages like polish, or romanian – Lucas Jun 01 '21 at 06:12

0 Answers0