我已经找到了几十个答案,但似乎没有一个能满足我的需求,希望有人能帮我。。。
我的URL结构看起来像这个
https://www.example.com/this-is-static/random_text_32-11
我需要重定向到
https://www.example.com/this-is-static/random/text_32-11
所以它总是在"随机";需要重定向到斜线/
下划线之后的所有内容都是动态的(random_text_32-11
(
还有其他的URL看起来像下面的,我不希望那些受到这段代码的影响
https://www.example.com/this-is-static/random-words/morerandom/words-change_5-911
我假设"随机";是任何随机单词(仅小写字母a-z(?而";32-11";也是可变的?
在这种情况下,在.htaccess
文件的顶部尝试以下操作:
RewriteEngine On
RewriteRule ^(this-is-static/[a-z]+)_([^/]+)$ /$1/$2 [R=302,L]
CCD_ 4反向引用与URL路径的第一部分匹配;"随机";单词(不包括第一个下划线(。$2
backreference匹配第一个下划线(不包括任何斜杠(之后到URL路径末尾的所有。
通过在第二个反向引用中排除斜杠,它自然无法与您不想重定向的URL匹配,因为这包含更多的路径段。
更新:我遇到了一个小问题,URLS在"这是静态的"。。。使用上面的例子;"随机";是";"随机文本";它不会重定向。。。尝试编辑以上内容,但无效
您只需要在[a-z]
字符类的末尾添加一个连字符,即[a-z-]
(第一个连字符表示范围a
到z
(。换句话说:
RewriteRule ^(this-is-static/[a-z-]+)_([^/]+)$ /$1/$2 [R=302,L]