Apache重写为Laravel/public

PiT*_*ber 3 php apache mod-rewrite laravel

我对此感到抱歉,但我的htdocs root是错的,我无法改变它.所以我必须让它在/public文件夹中工作.

我使用正常的Laravel .htaccess文件进行以下重写:

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

如果我打开,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/会很好.

Chr*_*ian 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>
Run Code Online (Sandbox Code Playgroud)

第 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';
Run Code Online (Sandbox Code Playgroud)

require 'paths.php';
Run Code Online (Sandbox Code Playgroud)

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

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


PiT*_*ber 5

我解决了一部分问题.如果我有一个htaccess的根,而不是/public

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

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