我正在尝试创建一个与以下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需要匹配的所有urls都可以在这里看到。
https://regex101.com/r/4TPEhy/1
我面临的两个问题--,first one是两个urls不匹配的问题:
en/property/rotterdam/apartment/2-rooms/lorem-ipsum-dolor-sit-amet/v-9/blah/1234/blahh/55555/?sass=123
en/property/9234234第二个,那个正则表达式上的某个东西导致了一个内部重定向错误。
这是我的准则(到目前为止我得到的最好的案例)
^(en\/)?property\/[A-Яa-я0-9\-_\/]+?([\d]+)(.*)$这是我重写的规则
RewriteRule ^(en\/)?property\/[A-Яa-я0-9\-_\/]+?([\d]+)(.*)$ $1properties/property/$2$3&%{QUERY_STRING} [NC,L]regex在这个工具(regex101)上似乎运行得很好,但是只要尝试刷新应用该规则的页面,我就会得到一个500 -内部服务器错误。
我需要匹配所有的案例,我尝试了几个小时不同的组合,但我错过了导致这些问题的东西。
在.htaccess上,我需要的组是$2和$3,因为$2包含我在脚本上使用的属性ID,$3和任何其他额外的参数或查询字符串一样都是URL的其余部分。
这么多不同配置的原因是用户可以设置自己的URL格式,但仅限于上面列出的选项。
这是请求此URL时apache日志的摘录
https://localhost/en/property/rotterdam/apartment/lorem-ipsum-dolor-sit-amet/v-9/test/132?blah=123日志
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发布于 2021-06-01 06:33:17
您可以尝试以下重写规则:
RewriteEngine On
RewriteRule ^(en/)?property/(?:\S*?[-/v])?(\d+)(/.*)?$ $1properties/property/$2$3 [NC,L]我们在-、/或v字符之后捕获属性ID。
https://stackoverflow.com/questions/67773685
复制相似问题