Php 将Laravel部署到域子文件夹 简介
我正在努力将Laravel项目部署到域子文件夹。。。以下是完整的“故事”: 我的老师在:Php 将Laravel部署到域子文件夹 简介,php,.htaccess,laravel,Php,.htaccess,Laravel,我正在努力将Laravel项目部署到域子文件夹。。。以下是完整的“故事”: 我的老师在: 他为我创建了一个名为mitocondrias的用户,这样我就可以通过ssh使用它,比如: sshmitocondrias@ilp.fe.up.pt 他还将通常的public_html文件夹设置为仅称为html 总之,如果我在/home/mitocondrias/html/上创建一个简单的hello worldindex.html,我可以在 我所做的 现在,关于Laravel部署,我做了如下工作: 我将名为
他为我创建了一个名为mitocondrias的用户,这样我就可以通过ssh使用它,比如:
sshmitocondrias@ilp.fe.up.pt
他还将通常的public_html
文件夹设置为仅称为html
总之,如果我在/home/mitocondrias/html/
上创建一个简单的hello worldindex.html
,我可以在
我所做的 现在,关于Laravel部署,我做了如下工作: 我将名为
CoExpr
的Laravel项目克隆到我的用户主页:/home/mitocondrias/CoExpr
我删除了html
文件夹,并使用以下命令创建了一个名为html
的symlink
到/home/mitocondrias/coexpr/public
:
mitocondrias@ilp:~$ln-s~/coexpr/public/html
下面是最后一个树结构:
ilp.fe.up.pt/ (the root of my teacher web hosting)
|
|-- mitocondrias/ (my user home, aka /home/mitocondrias)
| |
| |-- coexpr/ (the Laravel project)
| | |
| | |-- [...]
| | |-- public/
| | |-- [...]
| |
| |-- html/ (this is actually not a folder,
| | but a symlink to /home/mitocondrias/coexpr/public/)
我还运行了以下命令来设置正确的Laravel权限:
chmod-R 755 coexpr/
chmod-R o+w存储
问题 在所有这些之后,我可以在以下位置成功地看到登录页:(如果我使用
php artisan serve为应用程序提供服务,则相当于localhost:8000
)
但是当我尝试使用其他路由时,比如:(相当于localhost:8000/explorer
)我得到:
我做错了什么
额外信息
如果这是相关的,则/home/mitocondrias/coexpr/public/
中的.htaccess
与使用composer创建Laravel项目时生成的一样-我没有触摸它:
<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>
选项-多视图
重新启动发动机
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
由于symlink
,这也是.htaccess
,位于/home/mitocondrias/html/
终点
就这样。。。Aff,这是一篇很长的帖子。。。提前谢谢 提供了一个调试提示:检查路由是否与/index.php/
一起工作,以查看问题是否与.htaccess
有关
装载工作
因此,出于某种原因,您的.htaccess
无法工作
可能只需启用它就可以解决您的问题,如另一个相关问题所述。提供了一个调试提示:检查路由是否与/index.php/
一起工作,以查看问题是否与.htaccess
相关
装载工作
因此,出于某种原因,您的.htaccess
无法工作
正如另一个相关问题所述,简单地启用它可能会解决您的问题。也许最简单的方法是让您的老师使用public
作为web根目录,而不是html
,并将所有内容提升一个级别,摆脱coexpr/
和符号链接。可能吗?啊,也许你有一个重复的斜杠ln-s~/coexpr/public/html
-看起来你可能只需要ln-s~/coexpr/public html
@JanPapenbrock我认为public后面的斜杠是无关紧要的,我也这么认为。请检查下面我的答案,以获得最可能的解决方案。@JanPapenbrock我正在等待我的老师应用更改(我不在sudoers列表中)。我一有消息就回来找你。也许最简单的方法就是让你的老师用public
作为web根目录,而不是html
,然后把所有内容都升级一级,去掉coexpr/
和符号链接。可能吗?啊,也许你有一个重复的斜杠ln-s~/coexpr/public/html
-看起来你可能只需要ln-s~/coexpr/public html
@JanPapenbrock我认为public后面的斜杠是无关紧要的,我也这么认为。请检查下面我的答案,以获得最可能的解决方案。@JanPapenbrock我正在等待我的老师应用更改(我不在sudoers列表中)。我一有消息就回来。在运行a2enmod rewrite
并将apache2.conf
编辑为AllowOverride All
后,.htaccess
仍然无法工作。。。下面是当前的/etc/apache2/apache2.conf
:只是为了澄清一些简单的错误:在这些更改之后,您是否重新启动了Apache?另外,您的VirtualHost是否有特定于站点的配置?在/etc/apache2/sites enabled/yourfilename.conf中是的,我们确实重新启动了Apache。以下是/etc/apache2/sites enabled/000 default.conf
的内容:在运行a2enmod rewrite
并将apache2.conf
编辑为AllowOverride All
后,.htaccess
仍不工作。。。下面是当前的/etc/apache2/apache2.conf
:只是为了澄清一些简单的错误:在这些更改之后,您是否重新启动了Apache?另外,您的VirtualHost是否有特定于站点的配置?在/etc/apache2/sites enabled/yourfilename.conf中是的,我们确实重新启动了Apache。以下是/etc/apache2/sites enabled/000 default.conf
的内容:
<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>