将内部链接重定向到带有.htaccess的子目录(用于测试站点)

将内部链接重定向到带有.htaccess的子目录(用于测试站点),.htaccess,redirect,rewrite,subdirectory,.htaccess,Redirect,Rewrite,Subdirectory,我已经在这里寻找了一段时间的答案,但到目前为止没有任何效果。基本上,一个站点已经安装在WebRoot的子目录中,但是所有的内部链接都指向WebRoot,因为这是如何在live站点上设置的。是否存在将所有内部链接重定向到子目录的htaccess规则,或使链接正常工作的其他方法?尝试将这些规则添加到文档根目录(web根目录)中的htaccess文件中: 如果要重定向这些请求,请将方括号标志更改为:[L,R=301],谢谢。我假设代码中的第三行的结尾应该是-d,而不是-f。你能简单解释一下第一次重写的

我已经在这里寻找了一段时间的答案,但到目前为止没有任何效果。基本上,一个站点已经安装在WebRoot的子目录中,但是所有的内部链接都指向WebRoot,因为这是如何在live站点上设置的。是否存在将所有内部链接重定向到子目录的htaccess规则,或使链接正常工作的其他方法?

尝试将这些规则添加到文档根目录(web根目录)中的htaccess文件中:


如果要重定向这些请求,请将方括号标志更改为:
[L,R=301]

,谢谢。我假设代码中的第三行的结尾应该是
-d
,而不是
-f
。你能简单解释一下第一次重写的目的吗?@user1697563是的,那是一个打字错误。固定的。前两个条件检查给定的请求是否没有直接映射到文件(
!-f
)或目录(
!-d
)。接下来的条件检查我们是否在给定的请求前面添加了一个子目录,它是否会映射到一个现有的文件(
-f
)没有一个现有的目录(
-d
)。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/subdirectory%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/subdirectory%{REQUEST_URI} -d
RewriteRule ^ /subdirectory%{REQUEST_URI} [L]