重定向除部分 url 301 之外的所有 url

Posted

技术标签:

【中文标题】重定向除部分 url 301 之外的所有 url【英文标题】:Redirect all urls excluding part of url 301 【发布时间】:2020-11-27 13:15:28 【问题描述】:

我将更改网站上的 url 结构

例如。主页现在是:

http://example.com/web/www/

所有其他的url地址都遵循这个结构:

http://example.com/web/www/sample-post/

新地址将是(部分 /web/www/ 将被删除):

http://example.com

其他:

http://example.com/sample-post/

那么我可以使用一条规则自动重定向所有地址,该规则将从地址中删除部分/web/www/,还是必须手动重定向每个地址?

【问题讨论】:

【参考方案1】:

要从请求的 URL 中删除 /web/www 前缀,您可以使用文档根目录中 .htaccess 文件顶部的 mod_rewrite 来执行此操作:

RewriteRule On

RewriteRule ^web/www/(.*) /$1 [R=301,L]

(.*) 部分捕获/web/www/ 之后的剩余 URL 路径,该路径保存在 $1 反向引用中,我们重定向到该反向引用。

首先使用 302(临时)重定向进行测试以避免潜在的缓存问题。

【讨论】:

以上是关于重定向除部分 url 301 之外的所有 url的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 mod_rewrite 的情况下重定向除一个路径及其所有子路径之外的所有 URL?

.htaccess 重定向除 css 和 javascript 之外的所有扩展

301 重定向 - 替换 URL 的一部分

为啥这个 301 重定向会导致重定向到错误的 url?

Django 测试客户端在访问 url 时得到 301 重定向

使用哈希部分(锚)重定向 301 #