如何在共享主机的子文件夹中安装 laravel 应用程序?
Posted
技术标签:
【中文标题】如何在共享主机的子文件夹中安装 laravel 应用程序?【英文标题】:How to install laravel app in subfolder of shared host? 【发布时间】:2017-05-15 10:26:14 【问题描述】:我在共享主机“public_html”的根目录中安装 laravel 应用程序,现在我想在 ru/ 子文件夹中安装此应用程序的俄语版本,但是当我转到 example.com/ru 时出现 404 Page not found 错误。我使用 apache Web 服务器我的根文件夹中的 .htaccess 文件包含这些代码
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
我应该如何更改此配置?
谢谢。
【问题讨论】:
你的目录结构是什么?ru/
目录下的整个 laravel 应用?
我在根文件夹中有 laravel 应用程序,在子文件夹 /ru 中有另一个 laravel 应用程序
这是我的主机i.stack.imgur.com/BcC2B.png中的目录结构图片
【参考方案1】:
您将按照在根目录中安装它的方式进行操作。我会告诉你我是如何在我的共享主机帐户上安装它的,包括主域和子域。在我将所有项目上传到子文件夹后,您将成为 example.com/ru
,请执行以下操作:
-
在您的公用文件夹中有您的
.htaccess
文件。由于您基本上将其设为子域,因此它需要位于该子域的根目录中,因此将 .htaccess
从公共文件夹转移到 ru
文件夹的根目录。
打开.htaccess
并更改/添加以下内容:
DirectoryIndex public/index.php
并在RewriteRule
中将其更改为:
public/index.php
为了清楚起见,您的 .htaccess
在您更改后应该是这样的:
DirectoryIndex public/index.php
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ public/index.php [L]
# Handle Authorization Header
RewriteCond %HTTP:Authorization .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]
</IfModule>
【讨论】:
我想要一个 .htaccess 配置,如果 url 以 /ru 文件夹开头,否则转到公共文件夹 对于主站点,您需要一个单独的.htaccess
。因为在您的情况下,这基本上是一个“新网站”或子域。试试我上面写的,你会发现它工作正常。
我在 public_html 中有一个 .htaccess,在 /public 中有一个 .htaccess,我在 /ru 中有一个 .htaccess,在 /ru/public 中有一个 .htaccess,应该删除哪一个?哪一个应该改变?
正如我所说,请再次阅读我所说的内容。您不需要 4 或 5 个 ht 访问文件。每个站点/子站点只有一个。您应该保留主站点的 public_html 中的那个。并且您的 public_html 中需要一个用于 ru
文件夹。就是这样。
我做了你的建议,但还是不行,非常感谢【参考方案2】:
在根文件夹中创建一个 .htaccess 文件并粘贴代码并保存。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %REQUEST_FILENAME -d [OR]
RewriteCond %REQUEST_FILENAME -f
RewriteRule ^ ^$1 [N]
RewriteCond %REQUEST_URI (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ server.php
【讨论】:
以上是关于如何在共享主机的子文件夹中安装 laravel 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章