从 URL htaccess 中删除/删除相似的重复关键字

Remove / Delete similar duplicate keyword from URL htaccess

我有这个 url:

http://www.domain.net/iphone-reparatur-bremen/iphone-6-**reparatur**

并想要这个:

http://www.domain.net/iphone-**reparatur**-bremen/iphone-6

我有很多这样的链接 (200+)。

如何从 url 中删除最后一个词 "reparatur"?

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]

RewriteBase /

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php

RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

RewriteCond %{HTTP_HOST} (www\.)xn--domain-3ya.de
RewriteRule (.*) http://www.domain.de [L,R=301]

RewriteRule ^([^-/]+-([^/-]+)-[^/]+/.+?)-\b / [NC,L,R=302]
#RewriteRule ^(iphone-([^/]+)-[^/]+/iphone-\d)-\b / [NC,L,R=302]

RewriteCond %{QUERY_STRING} ^_=([^&]*) [NC]
RewriteRule ^ %{REQUEST_URI}?.html=%1 [R,L]



#Für weiterleitung von/auf root
Redirect 301 /de/ http://www.domain.de/

#haupt-kategorien
Redirect 301 /handy http://www.domain.de
Redirect 301 /handy-reparatur http://www.domain.de
Redirect 301 /handy-reparatur-bremen http://www.domain.de

还有很多301.. ignoremeignoremeignoremeignoremeignoremeignoremeignoreme

您可以使用这个基于反向引用的规则来查找和删除规则中的重复部分。将此规则放入您的根 .htaccess:

RewriteEngine On

RewriteRule ^([^-/]+-([^/-]+)-[^/]+/.+?)-\b / [NC,L,R=302]

它在初始 /iphone- 之后捕获值并将其分组到此子模式 ([^/]+) 中。稍后在正则表达式中,它使用反向引用 </code> 来确保最后也有相同的捕获值。</p> <p><code>\b用于单词边界。

这将重定向:

/iphone-reparatur-bremen/iphone-6-reparatur => /iphone-reparatur-bremen/iphone-6
/iphone-foobar-something/iphone-6-foobar => /iphone-foobar-something/iphone-6