它仍然不会重定向图像等内容,但我想如果不更改每个标签中的 src 路径,我就无法做到这一点,对吧?
使用捕获组!
RewriteRule (.*) /root/$1 [R=301,L]
您会看到,其中$1
包含对模式中括号中的内容的引用。因此,任何和所有 URI 都被重定向到根文件夹中的等效项。这也适用于子文件夹,一切(“img/something.jpg”->“root/img/something.jpg”)。
但是,仅此规则就会导致无限循环,因为重定向的 URL 现在将被重写。例如:请求来自/index.html,重定向到/root/index.html,但随后又被捕获,并重定向到/root/root/index.html......所以为了处理这个问题,我们应该引入一个RewriteCond , 喜欢
RewriteCond %{REQUEST_URI} !^/root/
这意味着:“如果请求的 URI 不以 '/root/' 开头”。这些应该让你开始。
另一种可能更经济的重定向方法是使用RedirectMatch 指令,但正则表达式有点混乱,因为它需要包含重写的 URL 不应以“root”开头的条件(以避免重定向环形)。我现在无法测试这个,但类似的东西
RedirectMatch ^/(?!root/)(.*) /root/$2
可能会成功。(该(?!root)
位是负前瞻,当然这种模式也可以在 rewriteRule 中使用)。