2

これらの URL からの正規表現は次のとおりです。.htaccess

example.com/hello-world-world
example.com/hello-world-hello

これに:

example.com/hello-world

次のように RewriteCond を使用します。

RewriteCond %{REQUEST_METHOD}  !=POST
RewriteCond %{REQUEST_URI} ^REGEX$
RewriteRule . %1 [R=301,L]
4

2 に答える 2

3

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

于 2013-10-18T08:37:01.283 に答える
1

あなたの非常に良い答えによると、ここのAnubhavaは、 URLの最後にあるスラッグを書き直すための私の解決策であり、に基づいているだけではありません/site/var1/var2

RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_URI} ^(.*?)/((?:[^-]*-)*)([^-]*)-((?=.*?\3).*)$ [NC]
RewriteRule . %1/%2%4 [R=301,L]
于 2013-10-18T11:27:44.557 に答える