我即将部署laravel项目。我上传了所有文件,并且网站运行正常,但是唯一的问题是当我尝试访问我的网站时,例如,如果我尝试在URL中写mywebsitename.com
,则显示了公共目录,这是因为我已经符号链接了我的Laravel的公用文件夹到public_html文件夹。我不知道如何编辑.htaccess
文件以便使用mywebsitename.com而非mywebsitename.com/public
加载网站。我的htacess文件代码是
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我的文件目录结构显示在this image
中请帮助我
答案 0 :(得分:4)
我猜这是一个Apache服务器。如果是;
mywebsitename.com
指向public_html
public_html
)中添加一个.htaccess文件,并将其粘贴到 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
答案 1 :(得分:4)
我找到了解决这个问题的方法。
1。复制public_html文件夹中的所有laravel文件,包括.htaccess文件和index.php文件(假定它们在公共文件夹中)(将两个文件都保留在公共文件夹中)。
2。然后使用SSH将存储链接到公用文件夹,为此,请打开SSH输入ID和密码,并使用“ cd domains / yourdomainname.com / public_html”更改目录 然后输入php artisan命令,即“ php artisan storage:link” (注意:-更改目录后,您可以根据需要提供所有php artisan命令,例如migration和config:cache或clear:cache。
3。现在,在给出所有必需的命令之后,如果您在URL上键入yourdomainname.com/public,但是如果您仅键入域名,则可以访问所有功能齐全的网站,包括图像显示功能,然后所有laravel文件会在浏览器上显示以避免出现这种情况,并跳转到公用文件夹内直接在公用文件夹外但在
内部创建一个.htaccess文件
复制public_html文件夹,复制下面给出的代码,然后,如果您只是将域名放在URL上,则将直接显示您的网站
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteRule ^ public [L]
答案 2 :(得分:3)
您可以将其与RewriteBase指令一起使用
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteBase /public_html/ # or '/' only depends on your vhost config
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
答案 3 :(得分:0)
我对apache服务器不熟悉,但是问题应该出在默认的索引文件中。 考虑到长期考虑,我建议您使用nginx或openresty,它更易于配置。