<IfModule mod_rewrite.c>
# That was ONLY to protect you from 500 errors
# if your server did not have mod_rewrite enabled
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Prevent direct access to the "public" folder - redirect to root
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /public/
RewriteRule ^public/(.*) /$1 [R=302,L]
#RewriteRule ^public/(.*)$ /$1 [R=302,L]
# Redirect Trailing Slashes If Not A Folder...
# - but look for the file in the "public" folder
# (ensure we are not already in the "public" folder)
RewriteCond %{REQUEST_URI} !^/public/
RewriteCond %{DOCUMENT_ROOT}/public/$1 !-d
RewriteRule ^(.*)/$ /$1 [R=302,L]
# Rewrite "everything" to the "public" subdirectory if not already
# This ignores existing files/dirs in the document root
RewriteCond %{REQUEST_URI} ^/(.*)
RewriteRule !^public/ public/%1
# Handle Front Controller... (as before)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
2条答案
按热度按时间mcvgt66p1#
由于大多数共享主机不允许您更改主域的目录,这是一个常见的问题。使用Laravel,您必须将域指向公共文件夹。
虽然这是可能的,但请注意,使用此解决方案,如果应用程序需要更新,您将面临安全问题的打击,正如@Tpojka所指出的那样,您可能会面临泄露机密的风险,例如从您的.env文件中泄露机密。
一个更好的解决方案是将Laravel应用程序目录移动到其他地方,并复制或符号链接public/文件夹内容。这样应用程序的实际文件就不会被公开访问。您需要确保如果您需要符号链接storage/,您也会将其移动到正确的文档根目录。
e4yzc0pl2#
我找到了解决方案,所以我想和别人分享。
这必须在根目录。公共目录。htaccess文件必须是空的。
像其他评论在这里。安装后,您需要检查您的敏感文件,如.env是不可见的。
尝试domain.com/.env,如果你没有得到.env文件,你是好的。