php 代码点火器4部署到apache2

bweufnob  于 2022-12-02  发布在  PHP
关注(0)|答案(2)|浏览(164)

我一直在尝试将我的codeigniter 4应用程序部署到本地apache服务器上。
我希望能够通过http://localhost/my_app/访问我的应用程序。
我已经在.env文件中设置了URL:

app.baseURL = 'http://localhost/my_app'

已编辑public/文件夹中的.htaccess

RewriteBase /public/

并为Apache创建了配置

<Directory "/var/www/html/my_app/public">
    AllowOverride all
    LogLevel debug
</Directory>

Alias /my_app /var/www/html/my_app/public

我可以访问主页http://localhost/my_app,但是当我尝试转到另一个页面http://localhost/my_app/bootstrapview时,apache找不到url。

"The requested URL was not found on this server."

我是不是错过了什么东西让它工作?我不想改变index.php文件的位置,它是我在搜索中找到的大部分东西。
当我用spark服务器试用它时,它工作得很好。
编辑:我使用的是Ubuntu 18.04,并且启用了mod_rewrite。
如果我不使用RewriteBase,它就会不断被重定向:

redirected from r->uri = /my_app/public/index.php/public/index.php/public/index.php/public/index.php/public/index.php/bootstrapview
bvhaajcl

bvhaajcl1#

我在查看其他选项时找到了一些答案。
在此配置下,如果将RewriteBase更改为应用程序的URL,它将正常工作:

RewriteBase /my_app/

到基本URL“http://localhost/my_app/“的重定向仍然存在一个问题,其中apache不会找到基本路由(在Routes.php -〉“/”中),但您可以创建另一个路由来指向它(例如“/home”)。

jtw3ybtb

jtw3ybtb2#

你应该总是为你的应用程序创建虚拟主机。这样你就不用在localhost/foo上工作了,而是在http://myapp.local上工作,这样你就可以更好地模拟生产环境,而不会在uri段之类的东西上出现问题。
为此,必须执行以下操作。
首先在本地环境的myapp.local中注册本地域

$ sudo nano /etc/hosts

添加行

127.0.0.1 myapp.local

然后,应将虚拟主机更新为以下内容:

<VirtualHost *:80>
    DocumentRoot /var/www/html/my_app/public
    ServerName myapp.local
    <Directory "/var/www/html/my_app/public">
        allow from all
        Options None
        Require all granted
    </Directory>
    RewriteEngine on
</VirtualHost>

在这一切之后,你必须重新启动你的apache服务

$ sudo service apache2 restart

现在您可以更改您的应用程序以使用此本地域,并且您应该为需要在本地Apache环境中工作的每个应用程序执行此操作。
ps.你的本地域可以是任何你想要的。myapp.local只是一个例子,它可以是myapp.dev,myapp.loc任何你想要的。

相关问题