如何组织Laravel的.htaccess文件以直接指向public文件夹并删除index.php

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); 3. 访问http://example.com/X/X(其中X是任何内容); 4. 跳转到http://example.com/public/index.php/X/X(隐藏public/index.php以防止出现重复的URL); 5. 防止访问公共文件夹外的目录/文件,并防止访问公共文件夹中的目录,但可以访问其中的文件; 6. 在生产和开发之间无需更改配置。
问题是如何实现这个目标,需要几个.htaccess文件?
我的进展到目前为止是阅读laravel文档和本论坛帖子,但无论我做什么,只要我访问http://localhost/laravel/就会出现404或500服务器错误。
2个回答

0

你需要将它放在你的应用程序根目录下。

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

一切都应该正常工作。


0

请看这里可能的选项here


你好Mogetutu,你的回答并没有解答我的问题。我无法使用虚拟主机。 - CMCDragonkai
我完全误解了你的问题,请在你的 .htaccess 文件中尝试这行代码 链接 - mogetutu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接