1

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

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

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

somehost/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”的子目录。

4

1 回答 1

0

尝试

RewriteEngine On
RewriteBase /myapp/

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

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

于 2012-08-10T02:02:24.013 回答