每条路线在共享主机

时间:2017-10-09 13:13:39

标签: php laravel

我正在尝试在A2Hosting共享主机上部署laravel应用程序。我的文档根目录是: / public_html 目录。我将所有内容从我的laravel应用程序上传到公共文件夹以外的/ beta目录。

然后我将所有内容从公共目录上传到 / 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!消息。我尝试在/login标记中将login更改为<a>。结果相同。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

Eisenheim,这是htaccess问题:在您的网络项目的根文件夹中获取一个.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它应该可以正常工作。

答案 1 :(得分:0)

对于那些使用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>