Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将Laravel部署到域子文件夹 简介_Php_.htaccess_Laravel - Fatal编程技术网

Php 将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部署,我做了如下工作: 我将名为

我正在努力将Laravel项目部署到域子文件夹。。。以下是完整的“故事”:

我的老师在:
他为我创建了一个名为mitocondrias的用户,这样我就可以通过ssh使用它,比如:
sshmitocondrias@ilp.fe.up.pt

他还将通常的
public_html
文件夹设置为仅称为
html

总之,如果我在
/home/mitocondrias/html/
上创建一个简单的hello world
index.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>