Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
public_html子文件夹中的Laravel项目在.htaccess重定向方面遇到问题_.htaccess_Laravel_Redirect_Vps_Public Html - Fatal编程技术网

public_html子文件夹中的Laravel项目在.htaccess重定向方面遇到问题

public_html子文件夹中的Laravel项目在.htaccess重定向方面遇到问题,.htaccess,laravel,redirect,vps,public-html,.htaccess,Laravel,Redirect,Vps,Public Html,我已经设置了我的VPS服务器,正在尝试设置一个Laravel项目。 我有一个/public\u html/文件夹,在访问网站URL时显示index.html 我在:/public\u html/project\u one/ 原始index.php位于/public\u html/project\u one/public/index.php 我希望该网站在默认情况下显示给Laravel project_one,但从昨天开始,我在Google上搜索了4个小时,我尝试了stackoverflow上

我已经设置了我的VPS服务器,正在尝试设置一个Laravel项目。 我有一个
/public\u html/
文件夹,在访问网站URL时显示index.html

  • 我在:
    /public\u html/project\u one/
  • 原始index.php位于
    /public\u html/project\u one/public/index.php
我希望该网站在默认情况下显示给Laravel project_one,但从昨天开始,我在Google上搜索了4个小时,我尝试了stackoverflow上的所有解决方案,但没有任何效果。。。我想我已经尝试了超过10个版本的.htaccess

问题是: 是否有人知道如何在
/public\u html/
中设置.htaccess以便它重定向到my Laravel项目?

我想我需要上传我的Laravel文件夹:
/public\u html/project\u one/
,但是有更好的位置吗

我希望主url显示Laravel项目。所以
www.mainurl.com
是Laravel的
project\u one/public/index.php
文件。我不想在URL中写入
/project\u one/

出于好奇,如果我现在访问:
www.mainurl.com/project\u one
我会得到一个403

失败的解决方案 在/public\u html/I中,我尝试使用以下内容添加.htaccess:

DirectoryIndex index.php

#Redirect to /project_one/public if you haven't already and the IP is okay
RewriteCond %{REMOTE_ADDR} ^1\.2\.3\.4*
RewriteCond %{REQUEST_URI} !^/project_one/public
RewriteRule ^(/lucaphoto)?(.+) /project_one/public$2 [L]

#if IP does not match and you ARE in the folder, then Redirect to root
RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.4*
RewriteCond %{REQUEST_URI} ^/project_one/public
RewriteRule .? / [R=301,L]
这让我觉得很奇怪:

  • 在Chrome上:它将我重定向到www.mainurl.com/project_one->,然后给我一个403禁止的错误**
  • 在safari上:它不会重定向我,但会给我以下错误:
  • 禁止。您没有访问/访问此服务器的权限

    此外,在尝试查找时遇到404 Not Found错误 使用ErrorDocument来处理请求

    Laravel的原始.htaccess文件 顺便说一下,Laravel在
    /project\u one/public/.htaccess
    上有一个原始的.htaccess文件。看起来是这样的:

    <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 ^ index.php [L]
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    </IfModule>
    
    
    选项-多视图
    重新启动发动机
    #如果不是文件夹,则重定向尾部斜杠。。。
    重写cond%{REQUEST_FILENAME}-D
    重写规则^(.*)/$/$1[L,R=301]
    #处理前控制器。。。
    重写cond%{REQUEST_FILENAME}-D
    重写cond%{REQUEST_FILENAME}-F
    重写规则^index.php[L]
    #句柄授权头
    RewriteCond%{HTTP:Authorization}。
    重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
    
    实际的laravle应用程序(除公用文件夹外的任何内容)不应该是公用的,因此不应该放在公用(public_html)文件夹中

    实际上,我尝试了一些类似于您的设置运行的东西。我的结论是-只有更改.htaccess文件才能在公用文件夹中运行laravel

    快速设置laravel应用程序最简单的解决方案是使用直接指向公用文件夹的子域

    www.mainurl.com /* points to .../public_html/ */
    laravel.mainurl.com /* points to .../laravel/public/ OR ( but not good ) */
    /* points to .../public_html/my-project/public/ */
    
    实际上,您需要做的是将域/子域的根目录更改为指向另一个文件夹-此时不需要更改.htaccess

    更新

    如果您的网站是www.example.com,并且您希望在打开此网站时显示您的laravel应用程序,则您有两个选择

  • 将laravels公用文件夹的内容放入公用html,并更改引用以适应公用html而不是公用文件夹

  • 如果服务器上的文件结构类似于…/var/stuff/../public\u html/则将所有内容上载到../var/stuff/my project,然后转到hosters界面,并在内部重定向到../var/stuff/my project/public文件夹,这样一切都会很好,而不会更改laravel代码中的任何内容。(除.env外的任何内容)

  • 因此,实际的问题是,您的域指向public_html文件夹,而不是应用程序的public文件夹。但是,请不要直接将你的应用程序放入公共html,将其与之平行,并更改域指向的位置


    如果您给我们一些关于您的主人的信息,我们可能会提供一个指南

    实际的laravle应用程序(除公用文件夹外的任何内容)不应该是公用的,因此不应该放在公用(public_html)文件夹中

    实际上,我尝试了一些类似于您的设置运行的东西。我的结论是-只有更改.htaccess文件才能在公用文件夹中运行laravel

    快速设置laravel应用程序最简单的解决方案是使用直接指向公用文件夹的子域

    www.mainurl.com /* points to .../public_html/ */
    laravel.mainurl.com /* points to .../laravel/public/ OR ( but not good ) */
    /* points to .../public_html/my-project/public/ */
    
    实际上,您需要做的是将域/子域的根目录更改为指向另一个文件夹-此时不需要更改.htaccess

    更新

    如果您的网站是www.example.com,并且您希望在打开此网站时显示您的laravel应用程序,则您有两个选择

  • 将laravels公用文件夹的内容放入公用html,并更改引用以适应公用html而不是公用文件夹

  • 如果服务器上的文件结构类似于…/var/stuff/../public\u html/则将所有内容上载到../var/stuff/my project,然后转到hosters界面,并在内部重定向到../var/stuff/my project/public文件夹,这样一切都会很好,而不会更改laravel代码中的任何内容。(除.env外的任何内容)

  • 因此,实际的问题是,您的域指向public_html文件夹,而不是应用程序的public文件夹。但是,请不要直接将你的应用程序放入公共html,将其与之平行,并更改域指向的位置


    如果您给我们一些关于您的主人的信息,我们可能会提供一个指南

    非常感谢!不过我不太清楚你的意思。。。基本上我有一个拉威尔项目