.htaccess 没有文件夹的htaccess重定向301

eqzww0vc  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(208)

我正在努力

  • 将站点从a.example重定向到b.example
  • 文件夹a.example/c/不得重定向
  • 必须将a.example/test.php重定向到a.example/c/test.php

我尝试这个.htaccess

RewriteEngine on

RewriteRule !^c($|/) https://b.example/ [L,R=301]

Redirect 301 /test.php https://www.a.example/c/test.php

但第二个301重定向没有重定向

dsekswqp

dsekswqp1#

第一个mod_rewrite RewriteRule指令将不以blog开头的 * 所有内容 * 重定向到b.example。这自然也将重定向/test.php。更改这些规则的顺序不会有任何影响,因为Redirect是mod_alias指令,无论指令的顺序如何,都将在后面处理1。(1之前在“LiteSpeed”上,与Apache相反。)
您需要执行类似于下面的操作,在整个过程中使用mod_rewrite并颠倒两个规则的顺序:

RewriteEngine On

RewriteRule ^test\.php$ /c/$0 [R=301,L]
RewriteRule !^c($|/) https://b.example/ [L,R=301]

这是假设第二个网域(b.example)指向不同的服务器。
第一个规则中 substitution 字符串中的$0反向引用包含与RewriteRulepattern 匹配的完整URL路径,即本例中的test.php(节省重复)。
首先使用302(临时)重定向进行测试,以避免潜在的缓存问题。在测试之前,您需要清除浏览器缓存。

相关问题