php 每个路由在共享主机上显示404消息

bvuwiixz  于 2023-06-04  发布在  PHP
关注(0)|答案(2)|浏览(173)

我正在尝试在A2Hosting共享主机上部署laravel应用程序。我的文档根目录是:/public_html目录。我把我的laravel应用程序中除了公共文件夹以外的所有内容都上传到了主机的/beta目录。
然后我将所有内容从public目录上传到**/public_html**目录。
在我的index.php文件中,我更改了以下两行:

require __DIR__.'/../beta/vendor/autoload.php';
$app = require_once __DIR__.'/../beta/bootstrap/app.php';

现在我只能正确地看到应用程序的主页。即mydomain.com。mydomain.com后面的任何超链接都显示404消息。在我的视图文件中,这是我引用路径的方式:

<a href="/login">Login</a>

但是在部署应用程序之后,每当我点击那个链接,即mydomain.com/login,我收到404 Not Found: The resource requested could not be found on this server!消息。我尝试在<a>标记中将/login更改为login。结果一样。我该怎么解决这个问题?

6pp0gazn

6pp0gazn1#

Eisenheim,这是htaccess问题:在你的web项目的根文件夹中获取一个.htaccess文件。
并将以下代码放入其中,

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

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteRule ^ index.php [L]
</IfModule>

然后尝试不使用index.php,它应该可以完美地工作。

uinbv5nw

uinbv5nw2#

对于那些在使用IIS的Windows环境中托管PHP的人来说,还有一个替代答案,请记住您需要一个web.config文件,其中配置了重写以服务Laravel:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>

    <rewrite>
      <rules>
        <rule name="Imported Rule 1" stopProcessing="true">
          <match url="^(.*)/$" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Redirect" redirectType="Permanent" url="/{R:1}" />
        </rule>
        <rule name="Imported Rule 2" stopProcessing="true">
          <match url="^" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />
        </rule>
      </rules>
    </rewrite>

    </system.webServer>
</configuration>

相关问题