Apache 在 htaccess 中重定向到子目录

2023-12-06

我已经构建了一个内部应用程序,需要在公共文件夹中启动,目录结构如下

myapp/conf
myapp/tmp
myapp/doc
myapp/public
myapp/public/css
myapp/public/js
myapp/public/index.php

如果用户将其安装在 webroot 子目录中,而不是将 myapp/public 设置为 webroot,则 URL 将是

某个主机/myapp/public/index.php

如何使用 /myapp/.htaccess 进行重定向,以便将所有内容转发到 /public/index.php,但同时也会更改 URL 以包含 /public。

我已经弄清楚如何重定向到公共,但由于我在 /public/ 中进行 URL 重写,所以我需要 $_SERVER['REQUEST_URL'] 在路径中包含 /public/ 。

我想阻止访问其他所有内容(/conf 和 /doc 等..)

运气好的话?

我尝试过的:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule (.*) index.php/$1 [R=301,L]
RewriteRule ^$ public [L]
</IfModule>

但这似乎之前公开过myapp网址如下所示:localhost/public/myapp/,相反我需要localhost/myapp/public/

简单来说,我希望 /whatever/* 的所有 URL 都附加 public /whatever/public/*。

该解决方案需要独立于域名和“myapp”名称。他们可以将根文件夹命名为“myapp”,但它始终会有一个名为“public”的子目录。


Try

RewriteEngine On
RewriteBase /myapp/

RewriteCond %{REQUEST_URI} !/public/
RewriteRule (.*) public/index.php/$1 [R=301,L]
RewriteRule ^$ public [L]

最主要的是您需要将基础更改为您的应用程序名称。那么规则可以保持不变。需要该条件来防止重定向循环。但如果您有一个 .htaccess 文件处理 /public/ 内的请求,您可能不需要它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache 在 htaccess 中重定向到子目录 的相关文章

随机推荐