【发布时间】:2012-08-10 10:12:20
【问题描述】:
我已经构建了一个内部应用程序,需要在公共文件夹中启动,目录结构如下
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”的子目录。
【问题讨论】:
标签: apache .htaccess mod-rewrite url-rewriting