我在使用共享主机帐户启动并运行Laravel项目时遇到了一些问题。当然,这在本地工作正常,几天前它在主机帐户上工作正常;我不确定我可以改变什么让它停止工作。
由于它是共享主机,我认为我无法更改httpd.conf
,但我当然可以修改.htaccess
。
我想要一个存储多个应用程序的地方,所以我的计划是在我的Web根目录中为每个Laravel项目创建一个新文件夹。这就是我目前设置的方式(不确定这是否是一种好方法):
然后将每个文件夹的公用文件夹映射到子域:
问题在于:当我尝试点击根页'/'
以外的任何路由时,我收到404
错误。这是来自主机的通用404,而不是来自Laravel。当我尝试通过子域访问时,出现500
错误。
如果我访问:
404 error
500 error
(错误立即发生)我已经看到其他问题提到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>
答案 0 :(得分:0)
通过添加以下行修改Laravel默认.htaccess
文件来解决此问题:
RewriteBase /
这解决了404
和500
错误。
总而言之:
<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>