我正在尝试创建可用于开发和生产服务器的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服务器错误。