全站 301 重定向以及不同重定向的子集

发布于 2024-08-25 09:30:07 字数 306 浏览 7 评论 0原文

我正在尝试为一个大约有 400 个页面的网站进行全站 301 重定向,但也有大约 10 个单独页面的子集,这些页面不遵循全站重定向,应该指向其他地方。

有什么想法如何格式化此类重定向规则,以便站点范围的重定向不会与子集页面重定向冲突?

我从站点范围重定向规则开始:

Options +FollowSymLinks 重写引擎开启 RewriteRule (.*) http://www.name.com/$1 [R=301,L]

I am trying to make a sitewide 301 redirect for a site with around 400 pages but also have a subset of about 10 individual pages that don't follow the sitewide redirect and should point somewhere else.

Any ideas how to format such redirect rules so the sitewide redirect doesnt conflict with the subset pages redirect?

I am starting with the sitewide redirect rule as:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.name.com/$1 [R=301,L]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瀞厅☆埖开 2024-09-01 09:30:07

重写规则按照写入的顺序进行解析,因此列出它们的顺序也定义了优先级。
鉴于此,您应该首先将请求 URI 与 10 个单独页面进行匹配并相应地返回重定向,然后定义站点范围重定向。

如果 10 个单独的页面有一个目标 URL,则匹配规则可能是 1,否则您应该为每个请求 URI 执行一次重定向。

注意在第一个重定向中使用 [L] 标志,告诉服务器如果规则匹配就退出例程,我还建议添加

RewriteBase /

对于某些 Apache 版本至关重要的行,其中省略了此行可能会导致 http bad conf 错误。

Options +FollowSymLinks

#switch on the rewrite engine:
RewriteEngine On
RewriteBase /

#rules for the individual redirections:
RewriteRule http://example.com/myUrl-1 http://www.example.org/new-1 [R=301,L]
RewriteRule http://example.com/myUrl-4 http://www.example.org/new-2 [R=301,L]
RewriteRule http://example.com/myUrl-3 http://www.example.org/new-3 [R=301,L]
#...and so on

#sitewide redirection rule:
RewriteRule (.*) http://www.example.org/$1 [R=301]

The rewrite rules are parsed in the order they are written, so the order you list them also defines the priority.
Given that, you should first match the request URI with the 10 individual pages and return the redirection accordingly, and then define the sitewide redirection.

If the 10 individual pages have a single target URL, the match rule may be one, otherwise you should do a single redirection per each request URI.

Take care to use the [L] flag for the first redirections, to tell the server to exit the routine if the rule is matched, and I would also suggest to add the line

RewriteBase /

which is pivotal for some Apache versions, in which the omission of this line may cause a http bad conf error.

Options +FollowSymLinks

#switch on the rewrite engine:
RewriteEngine On
RewriteBase /

#rules for the individual redirections:
RewriteRule http://example.com/myUrl-1 http://www.example.org/new-1 [R=301,L]
RewriteRule http://example.com/myUrl-4 http://www.example.org/new-2 [R=301,L]
RewriteRule http://example.com/myUrl-3 http://www.example.org/new-3 [R=301,L]
#...and so on

#sitewide redirection rule:
RewriteRule (.*) http://www.example.org/$1 [R=301]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文