slug からすべての重複した単語を削除するのはかなりトリッキーですmod_rewrite
が、lookahead based
使用できる正規表現ルールは次のとおりです。
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/((?:[^-]*-)*)([^-]*)-((?=.*?\2).*)$
RewriteRule ^ /%1%3 [L,R]
- これはにリダイレクトさ
/hello-world-world
れます/hello-world
- これはにリダイレクトさ
/hello-world-hello
れます/world-hello
更新:あなたのコメントによると:
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_URI} ^(/site/var1/var2)/((?:[^-]*-)*)([^-]*)-((?=.*?\3).*)$ [NC]
RewriteRule ^ %1/%2%4 [L,R]
これにより、重複を削除してこれにリダイレクトさhttp://localhost/site/var1/var2/hello-world-world
れます。http://localhost/site/var1/var2/hello-world
更新 2:あなたのコメントによると:
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_URI} ^(/site/var1/var2)/((?:[^/]*/)*)([^/]*)/((?=.*?\3).*)$ [NC]
RewriteRule ^ %1/%2%4 [L,R]
これはにリダイレクトさhttp://localhost/site/var1/var2/hello/world/world/boy/boy
れますhttp://localhost/site/var1/var2/hello/world/boy