将“foo/”从“foo”内部重定向到“foo/bar/”

将“foo/”从“foo”内部重定向到“foo/bar/”

可能重复:
您想了解有关 Mod_Rewrite 规则的所有信息但又不敢问吗?

我有一个~/Branches/可通过 apache2 访问的文件夹localhost/~me/。现在我localhost/~me/branches_index/web/index.php想让它在localhost/~me/branches_index/

那么我怎样才能从文件夹重定向/~me/branches_index/到?/~me/branches_index/web//Branches/branches_index/


我尝试过,但是没有成功。

无限循环:

Redirect /~me/branches_index/ /~me/branches_index/web/

放在/web/最前面:

Redirect / /web/

答案1

您尝试的重定向失败,因为
Redirect /~me/branches_index/ /~me/branches_index/web/
将以递归方式重定向所有内容/~me/branches_index/*

这意味着您/~me/branches_index/what/so/ever
将被重定向,/~me/branches_index/web/what/so/ever从而陷入无休止的循环。

.htaccess解决方案是在文件中使用重写,保存在/~me/branches_index/
类似这样的代码应该可以完成工作:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^(.*)web/(.*)$
RewriteRule ^(.*)$ /~me/branches_index/web/$1 [NC,L]

答案2

一种方法是将其放入 /branches_index/ 的 .htaccess 配置中

RewriteEngine On
RewriteCond %{REQUEST_URI} !^web/
RewriteRule (.*) web/$1 [QSA,L]

相关内容