htaccess - 从 &_GET 中删除 url 的中间部分

htaccess - remove middle part of url from a &_GET

我有 url 个这样的:

www.example.com/artworks/arte-1/english-name-1

我想删除 arte-1 并使 url 像这样:

www.example.com/artworks/english-name-1

arte-1 和 english-name-1 均来自 &_GET 结果。有时它们是一样的,比如

www.example.com/artworks/dimension/dimension

但是我想得到url的第一部分和第三部分。即使它们不同,也找不到方法来做到这一点。我尝试过的其中一件事:

RewriteRule ^artworks/([a-z0-9-]+)/?([a-z0-9-]+)$  [R=302,L]

我也试过:

RewriteCond %{THE_REQUEST} artworks/([a-z0-9-]+)/([a-z0-9-]+)
RewriteRule ^ artworks/? [L]
RewriteCond %{THE_REQUEST} artes/([a-z0-9-]+)/([a-z0-9-]+)
RewriteRule ^ artes/%2? [L]

我将它们放在 RewriteEngine On 之后,但它不起作用。我的工作 htaccess 是:

RewriteEngine On

RewriteRule ^artworks\/([a-z0-9-]+)\/([a-z0-9-]+)\/?$ index.php?id=artworks&pintura=&versao= [L]
RewriteRule ^artes\/([a-z0-9-]+)\/([a-z0-9-]+)\/?$ index.php?id=artes&pintura=&versao= [L]

RewriteRule ^([a-z0-9-]+)\/?$ index.php?id= [L]

我能得到一些帮助吗?

根据您的尝试,请尝试遵循以下规则。请确保在测试您的 URL 之前清除您的浏览器缓存。

RewriteEngine ON
##Newly added rules here.
RewriteCond %{THE_REQUEST} \s/(artworks)/(?:[\w-]+)/([\w-]+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L]
RewriteRule ^(artworks)/([\w-]+)/?$ index.php?id=&versao= [NC,L]

##OP's already existing rules edited a bit for improvement here.
RewriteRule ^artworks/([\w-]+)/([\w-]+)/?$ index.php?id=artworks&pintura=&versao= [NC,L]
RewriteRule ^artes/([\w-]+)/([\w-]+)/?$ index.php?id=artes&pintura=&versao= [NC,L]
RewriteRule ^([\w-]+)/?$ index.php?id= [L]