【问题标题】:How to install laravel app in subfolder of shared host?如何在共享主机的子文件夹中安装 laravel 应用程序?
【发布时间】: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中的目录结构图片

标签: php apache .htaccess laravel mod-rewrite


【解决方案1】:

您将按照在根目录中安装它的方式进行操作。我会告诉你我是如何在我的共享主机帐户上安装它的,包括主域和子域。在我将所有项目上传到子文件夹后,您将成为 example.com/ru,请执行以下操作:

  1. 在您的公用文件夹中有您的.htaccess 文件。由于您基本上将其设为子域,因此它需要位于该子域的根目录中,因此将 .htaccess 从公共文件夹转移到 ru 文件夹的根目录。
  2. 打开.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 2020-10-11
    • 2013-07-05
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多