3

我正在尝试创建可在开发和生产服务器上使用的 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,因为开发环境会不断变化。

我希望能够做到这一点:

  1. 访问http://localhost/laravel/X/X(其中 X 是任何东西)
  2. 重定向到http://localhost/laravel/public/index.php/X/X(将 public/index.php 隐藏在 url 中以防止重复的 url)
  3. 访问http://example.com/X/X(其中 X 是任何东西)
  4. 重定向到http://example.com/public/index.php/X/X(将 public/index.php 隐藏在 url 中以防止重复的 url)
  5. 防止访问公用文件夹之外的目录/文件,并防止访问公用文件夹中的目录,但不能访问文件。
  6. 无需在生产和开发之间更改配置

问题是,我该怎么做以及需要多少个 .htaccess 文件?

到目前为止,我的进展一直是通过 laravel 文档和这个论坛帖子,但无论我做什么,当我去的时候,我总是收到 404 或 500 服务器错误http://localhost/laravel/

4

2 回答 2

0

在这里查看一个可能的选项。

于 2012-11-28T22:29:06.470 回答
0

您将把它放在应用程序的根目录中。

- application/
- public/
  - .htaccess (already provided by laravel)
- index.php/
- .htaccess (the one specified by appfog)

一切都应该正常工作。

于 2013-05-16T11:41:36.200 回答