Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在共享主机的子文件夹中安装laravel应用程序?_Php_Apache_.htaccess_Laravel_Mod Rewrite - Fatal编程技术网

Php 如何在共享主机的子文件夹中安装laravel应用程序?

Php 如何在共享主机的子文件夹中安装laravel应用程序?,php,apache,.htaccess,laravel,mod-rewrite,Php,Apache,.htaccess,Laravel,Mod Rewrite,我在共享主机“public_html”的根目录下安装了laravel应用程序。现在我想在ru/子文件夹中安装此应用程序的俄语版本,但当我转到example.com/ru时,我发现404页面未找到错误。我使用根文件夹中的apache web服务器my.htaccess文件包含这些代码 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>

我在共享主机“public_html”的根目录下安装了laravel应用程序。现在我想在ru/子文件夹中安装此应用程序的俄语版本,但当我转到example.com/ru时,我发现404页面未找到错误。我使用根文件夹中的apache web服务器my.htaccess文件包含这些代码

<IfModule mod_rewrite.c>
   RewriteEngine On 
   RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

重新启动发动机
重写规则^(.*)$public/$1[L]
我应该如何更改此配置


谢谢。

您将以与在根目录中安装相同的方式执行此操作。我将告诉您我是如何在我的共享主机帐户(包括主域和子域)上安装它的。在我将所有项目上载到子文件夹后,您将使用
example.com/ru
,请执行以下操作:

DirectoryIndex public/index.php
  • 在您的公用文件夹中有您的
    .htaccess
    文件。由于您基本上将此文件设置为子域,因此它需要位于该子域的根目录中,因此将
    .htaccess
    从公用文件夹传输到
    ru
    文件夹的根目录中
  • 打开
    .htaccess
    并更改/添加以下内容:

    DirectoryIndex public/index.php
    
    重写规则中
    将其更改为:

    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>
    
    DirectoryIndex public/index.php
    选项-多视图
    重新启动发动机
    #如果不是文件夹,则重定向尾部斜杠。。。
    重写cond%{REQUEST_FILENAME}!-d
    重写规则^(.*)/$/$1[L,R=301]
    #处理前控制器。。。
    重写cond%{REQUEST_FILENAME}!-d
    重写cond%{REQUEST_FILENAME}!-f
    重写规则^public/index.php[L]
    #句柄授权头
    RewriteCond%{HTTP:Authorization}。
    重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
    
    你的目录结构是什么?整个laravel应用程序在
    ru/
    目录中?我在根文件夹中有laravel应用程序,在子文件夹中有另一个laravel应用程序/rutis是我主机中目录结构的图像。我需要一个.htaccess配置,如果url以/ru文件夹开始,否则转到主站点的公共文件夹,你需要一个单独的文件夹
    .htaccess
    ,因为这基本上是一个“新网站”“,或您案例中的子域。试试我上面写的,你会发现它工作得很好。我在public_html中有一个.htaccess,在/public中有一个.htaccess。我在/ru中有一个.htaccess,在/ru/public中有一个.htaccess。应该删除哪一个?哪一个应该改变?正如我所说的,再读一遍我所说的。您不需要4或5个ht访问文件。每个站点/子站点仅一个。主站点的公共html中的一个,您应该保留。您需要在公共html中为
    ru
    文件夹设置一个。就这样。我听了你的建议,但还是不管用。谢谢