我正在尝试创建可在开发和生产服务器上使用的 htaccess 文件。开发服务器的文件夹结构是这样的:
Server Root (www)
-laravel
-public
-index.php
-controller/method... etc
生产服务器没有不可公开访问的文档根目录。我在 appfog 上部署它,它需要 .htaccess 来执行此操作。Appfog 的文档中提到了这一点:https ://docs.appfog.com/languages/php#custom
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]
生产服务器的文件夹结构将是这样的(它只是删除了 laravel 文件夹):
Server Root (www)
-public
-index.php
-controller/method... etc
我想在不使用 apache httpd 的情况下实现这一点,只使用 htaccess,因为开发环境会不断变化。
我希望能够做到这一点:
- 访问
http://localhost/laravel/X/X
(其中 X 是任何东西) - 重定向到
http://localhost/laravel/public/index.php/X/X
(将 public/index.php 隐藏在 url 中以防止重复的 url) - 访问
http://example.com/X/X
(其中 X 是任何东西) - 重定向到
http://example.com/public/index.php/X/X
(将 public/index.php 隐藏在 url 中以防止重复的 url) - 防止访问公用文件夹之外的目录/文件,并防止访问公用文件夹中的目录,但不能访问文件。
- 无需在生产和开发之间更改配置
问题是,我该怎么做以及需要多少个 .htaccess 文件?
到目前为止,我的进展一直是通过 laravel 文档和这个论坛帖子,但无论我做什么,当我去的时候,我总是收到 404 或 500 服务器错误http://localhost/laravel/