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

时间:2015-09-06 12:08:06

标签: regex .htaccess url duplicates keyword

我有这个网址:

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

并想要这个:

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

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

如何删除最后一个字" 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 ^([^-/]+-([^/-]+)-[^/]+/.+?)-\2\b /$1 [NC,L,R=302]
#RewriteRule ^(iphone-([^/]+)-[^/]+/iphone-\d)-\2\b /$1 [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

1 个答案:

答案 0 :(得分:0)

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

RewriteEngine On

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

它是在初始/iphone-之后捕获值并将其分组到此子模式([^/]+)中。在正则表达式的后面,它使用反向引用\2来确保同样的捕获值也在最后。

\b用于字边界。

这将重定向:

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