我一直在尝试将我的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
2条答案
按热度按时间bvhaajcl1#
我在查看其他选项时找到了一些答案。
在此配置下,如果将RewriteBase更改为应用程序的URL,它将正常工作:
到基本URL“http://localhost/my_app/“的重定向仍然存在一个问题,其中apache不会找到基本路由(在Routes.php -〉“/”中),但您可以创建另一个路由来指向它(例如“/home”)。
jtw3ybtb2#
你应该总是为你的应用程序创建虚拟主机。这样你就不用在localhost/foo上工作了,而是在http://myapp.local上工作,这样你就可以更好地模拟生产环境,而不会在uri段之类的东西上出现问题。
为此,必须执行以下操作。
首先在本地环境的myapp.local中注册本地域
添加行
然后,应将虚拟主机更新为以下内容:
在这一切之后,你必须重新启动你的apache服务
现在您可以更改您的应用程序以使用此本地域,并且您应该为需要在本地Apache环境中工作的每个应用程序执行此操作。
ps.你的本地域可以是任何你想要的。myapp.local只是一个例子,它可以是myapp.dev,myapp.loc任何你想要的。