.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]
答案 0 :(得分: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
答案 1 :(得分:1)
根据你非常好的答案,Anubhava是我在任何网址末尾重写slu 的解决方案,而不仅仅基于/site/var1/var2
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_URI} ^(.*?)/((?:[^-]*-)*)([^-]*)-((?=.*?\3).*)$ [NC]
RewriteRule . %1/%2%4 [R=301,L]