我有这个网址:
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
答案 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