在本地主机上,我正在运行我的php(MVC)应用程序,在我的.htaccess文件中有以下规则:
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(config|core|css|js|fonts|images|robots\.txt)
RewriteRule ^(.+)$ index.php/$1 [L]
例如,localhost/myapp/register/login
将加载登录页面。但在一个实时服务器上我有问题。我遇到的第一个问题是No input file specified
。阅读this answer时,我把这行RewriteRule ^(.+)$ index.php/$1 [L]
改为RewriteRule ^(.*)$ index.php?/$1 [L]
。这解决了第一个问题,但又产生了另一个问题,现在不管url是什么,它总是加载相同的/default视图和控制器。
在我的index.php有以下几行代码:
$url = isset($_SERVER['PATH_INFO']) ? explode('/', ltrim($_SERVER['PATH_INFO'], '/')) : [];
// Route the request
Router::route($url);
所以,我检查了$_SERVER ['PATH_INFO']值,它是空的。现在我的问题是为什么它是空的,我如何才能实现正常的行为的网址。
2条答案
按热度按时间zphenhs41#
所以我找到了一个解here。我已经更改了我的
index.php
如下:...现在它正按预期工作:)。
6tr1vspr2#
当我们/我可以使用Laravel时,它是如此简单,因为它自动在文件夹中带有**.htaccess**文件,除了使用Laravel之外,您还可以使用cPanel。
.htaccess文件应包含以下规则: