尝试访问Laravel路线时出现404或500错误

时间:2017-04-30 19:41:29

标签: php apache laravel .htaccess

我在使用共享主机帐户启动并运行Laravel项目时遇到了一些问题。当然,这在本地工作正常,几天前它在主机帐户上工作正常;我不确定我可以改变什么让它停止工作。

由于它是共享主机,我认为我无法更改httpd.conf,但我当然可以修改.htaccess

我想要一个存储多个应用程序的地方,所以我的计划是在我的Web根目录中为每个Laravel项目创建一个新文件夹。这就是我目前设置的方式(不确定这是否是一种好方法):

然后将每个文件夹的公用文件夹映射到子域:

问题在于:当我尝试点击根页'/'以外的任何路由时,我收到404错误。这是来自主机的通用404,而不是来自Laravel。当我尝试通过子域访问时,出现500错误。

如果我访问:

我已经看到其他问题提到httpd.conf中更改设置,但我不相信我有权这样做。鉴于以前这对我有用,我认为除此之外还有一个解决方案。

我该怎么做才能防止这些错误?

另外,为什么从http://example.com/App1/public vs http://app1.example.com点击页面时会出现不同的错误?

任何帮助都将非常感谢..!

不确定这是否有帮助,但这是我的.htaccess代码(默认为Laravel 5.4.21):

<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>

1 个答案:

答案 0 :(得分:0)

通过添加以下行修改Laravel默认.htaccess文件来解决此问题:

RewriteBase /

这解决了404500错误。

总而言之:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteBase /

    # 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>