因此,您需要在 URL 路径的开头添加 /enterprise。我假设您需要排除其他映射到静态文件的请求(如图像、CSS、JS 和 WordPress 前端控制器 index.php 本身)。在 .htaccess 文件的顶部添加以下内容:
RewriteCond %{REQUEST_URI} !\.\w{2,4}$
RewriteRule !^enterprise https://www.example.com/enterprise%{REQUEST_URI} [R=301,L]
上述规定,如果请求的 URL 路径不以 /enterprise 开头并且不以看起来像文件扩展名的内容结尾,则重定向,在 URL 路径前加上 /enterprise。
我假设所有静态资源都包含标准文件扩展名(.css、.js、.png 等),并且您的 WordPress URL 看起来没有文件扩展名,例如。不是.html 等形式。这种简单的模式匹配避免了更昂贵的文件系统检查。
包括完整的规范 URL(即https://www.example.com/)以避免在请求非规范 URL 时多次重定向。
首先使用 302(临时)重定向进行测试以避免潜在的缓存问题。
更新#1:
我不需要重定向整个站点,只需要重定向以 /perfil 或 /perfil/amp 结尾的 URL
在这种情况下,您可以添加另一个条件来匹配这些 URL。例如:
RewriteCond %{REQUEST_URI} !\.\w{2,4}$
RewriteCond %{REQUEST_URI} /perfil(/amp)?$
RewriteRule !^enterprise https://www.example.com/enterprise%{REQUEST_URI} [R=301,L]
更新#2:
还有一些我想通过添加 / 企业重定向的 url,但这些没有终止 /perfil 或 /amp 示例:example.com/my-url-is-here,我想重定向到:@987654338 @
这些似乎是“特殊情况”,因此您需要为每个“特殊”网址添加单独的指令。
例如,以下内容可以放在上述规则之前或之后:
RewriteRule ^my-url-is-here$ https://www.example.com/enterprise/$0/perfil [R=301,L]
$0 是对与RewriteRule 匹配的整个 URL 路径的反向引用模式。
更新#3:
...所有网址必须包含以下单词/enterprise/my-url-is-here/perfil 或/enterprise/my-url-is-here/perfil/amp
如果必须重定向 所有 URL,那么是的,您可以实施单个规则。但是,您显然不能重定向到 .../perfil 或 .../perfil/amp - 您需要选择其中一个。
例如:
RewriteCond %{REQUEST_URI} !^/(enterprise|perfil)(/|$)
RewriteRule ^([\w-]+)/?$ https://www.example.com/enterprise/$1/perfil [R=301,L]
以上重定向所有对单个路径段 URL 的请求,其中该路径段只能包含字符 a-z、A-Z、0-9、_(下划线)或 -(连字符)和重定向到 /enterprise/<url>/perfil 形式的 URL。
它将重定向/foo 或/foo/,但不会重定向/something/foo 或/foo/something 或/enterprise 或/perfil(如果它们可能是有效请求?)。
$1 反向引用包含捕获的 URL 路径减去尾部斜杠(如果有)。