我正在努力解决301重定向和htaccess的问题.我已将网站从旧域移动到新域.我已经成功地通过301重定向来实现这一目标.如此:
Redirect 301 / https://newdomain.com
Run Code Online (Sandbox Code Playgroud)
在旧网站上,子类别网址如下:
olddomain.com/product-category/parent-cat1/parent-cat2/child-cat
Run Code Online (Sandbox Code Playgroud)
要么
olddomain.com/product-category/parent-cat1/child-cat
Run Code Online (Sandbox Code Playgroud)
要么
olddomain.com/product-category/child-cat
Run Code Online (Sandbox Code Playgroud)
而在新网站上他们是:
newdomain.com/product-category/child-cat
Run Code Online (Sandbox Code Playgroud)
不幸的是,这导致404重定向.有没有办法从网址中删除父类别(可能因名称和金额而异)?
提前感谢任何建议,欢呼
尝试包括下列RedirectMatch指令之前您现有的Redirect指令:
RedirectMatch 302 ^/([\w-]+)/(?:[\w-]+/)+([\w-]+)$ https://newdomain.com/$1/$2
Run Code Online (Sandbox Code Playgroud)
该RedirectMatch指令是指令的补充Redirect,两者都是mod_alias的一部分.除了RedirectMatch指令使用正则表达式匹配URL路径,而Redirect使用简单的前缀匹配.
这假定路径段(即"产品类别","家长猫"和"子猫")由刚刚人物a-z,A-Z,0-9,_和-(连字符).这需要尽可能具体,以免"过多"匹配.需要一个或多个"父母猫".
$1是对模式中第一个捕获组的反向引用.即.([\w-]+),产品类别.并且$2是对第二个被捕获组的反向引用,即.([\w-]+)在模式的最后,孩子 - 猫.(?:....)中间的"组"是非捕获组,因此没有适用于此的反向引用.
这是302(临时)重定向.只有在工作正常时才将其更改为301.使用302s测试更容易,因为它们不是由浏览器缓存的.因此,您需要确保在测试之前清除浏览器缓存.
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |