我有一个 Apache 配置,它具有多个重写规则和重定向,以便获得最可爱的 URL,防止 SEO 重复等。以下是一个片段作为示例(它具有更多功能):
# Redirecting non-www to www
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
# Removing index.php
RewriteCond %{REQUEST_URI} index\.php$ [NC]
RewriteRule .* / [R=301,L]
# A big bunch of these
Redirect permanent /old-article.html http://www.example.com/new-article.html
Redirect permanent /another-old-article.html http://www.example.com/new-article2.html
这很好用,但它碰巧会产生很多重定向。一个常见的情况如下所示:
http://example.com/index.php, 301 redirect to http://www.example.com/index.php
http://www.example.com/index.php, 301 redirect to http://www.example.com
它有时会达到 4-5 个重定向。
现在,我希望将所有这些规则链接起来并只生成一个 301 重定向,如下所示:
http://example.com/index.php, 301 redirect to http://www.example.com
我知道我可以花一个下午的时间思考和整理规则以更好地匹配,而且我可以创建组合规则。但这会使已经很长的文件复杂化。我想要一个标志、操作数或任何可以执行所有规则的东西,就好像它们在内部一样,并且只有在爬取每条规则后才发出重定向。这甚至可能吗?