我正在尝试在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>
。结果相同。我该如何解决这个问题?
答案 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>