4

对此我很抱歉,但我的 htdocs 根是错误的,我无法改变它。所以我必须让它在/public文件夹中工作。

我使用带有以下重写的普通 Laravel .htaccess 文件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

如果我打开http://kemtime2_neu.pr.domain.de/public,我会被重定向到http://kemtime2_neu.pr.domain.de/public/http://kemtime2_neu.pr.domain.de/public/login

我怎样才能解决这个问题?

我很乐意让它工作,http://kemtime2_neu.pr.domain.de/但让它工作http://kemtime2_neu.pr.domain.de/public/会很好。

4

2 回答 2

6

我使用这篇文章的 3 解决方案并且工作正常:

http://web.archive.org/web/20130320184846/http://forums.laravel.io/viewtopic.php?id=1258

解决方案 1 - 带有符号链接的备用安装路径。

这是首选的解决方案,通常是一个全方位的好主意。可以将您的应用程序安装到与 public_html/ 无关的文件夹,然后将公用文件夹符号链接到 public_html/ 路径。

例如:

将您的应用程序安装到 /home/applications/mysite.com

假设您的 DocumentRoot 指向 /var/www/vhosts/mysite.com/httpdocs

从 mysite.com vhosts 文件夹中删除 httpdocs 文件夹,然后使用符号链接将两者连接起来:ln -s /home/applications/mysite.com/public /var/www/vhosts/mysite.com/httpdocs

解决方案 2 - .htaccess 与 mod_rewrite

此解决方案使您能够将 Laravel 放入您的公用文件夹,然后使用 .htaccess 文件将请求重定向到公用文件夹。此解决方案将您的应用程序和核心系统代码放入可公开访问的文件夹中。这不是我们鼓励您使用任何 PHP 框架做的事情。

步骤 1. 将 Laravel 放在您的文档根文件夹中。

步骤 2. 将以下 .htaccess 文件放在您的文档根文件夹中。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

第 3 步。确保您在 application/config/application.php 中手动设置“url”配置,否则 Laravel 将生成错误的 URL。确保您的每个环境都具有正确的 application.url 配置。有关特定于环境的配置的更多信息,请参阅: http: //laravel.com/docs/install#environments

解决方案 3 - 将公用文件夹合并到安装根目录

此解决方案将您的应用程序和核心系统代码放入可公开访问的文件夹中。这不是我们鼓励您使用任何 PHP 框架做的事情。

将 public/ 文件夹的内容复制到你的 Laravel 安装文件夹中,然后在你的 index.php 文件中更改这一行:

require '../paths.php';

require 'paths.php';

请记住,任何捆绑包、库或其他类型的第三方代码都可能无法公开访问。

注意:同样重要的是要注意你的 bundles/ 和 public/bundles/ 目录现在会发生冲突。使用这种方法时,您可能不想使用 artisan 的 bundle:publish 任务,但不知道您的 bundle 想要发布什么。

于 2013-03-19T12:09:14.640 回答
6

我部分解决了。如果我在根目录中有一个 .htaccess 而不是/publicwith

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /public/index.php/$1 [L]

我可以打开http://kemtime2_neu.pr.domain.de/login,但图像和 css 仍然是错误的。我需要先检查文件是否存在于/public. 我认为这是一个新问题

于 2013-03-19T12:44:01.650 回答