PHP - .htaccess问题$_SERVER ['PATH_INFO']为空

rbl8hiat  于 2023-06-24  发布在  PHP
关注(0)|答案(2)|浏览(226)

在本地主机上,我正在运行我的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']值,它是空的。现在我的问题是为什么它是空的,我如何才能实现正常的行为的网址。

zphenhs4

zphenhs41#

所以我找到了一个解here。我已经更改了我的index.php如下:

$url = isset($_SERVER['REQUEST_URI']) ? explode('/', ltrim($_SERVER['REQUEST_URI'], '/')) : [];
 // Route the request
 Router::route($url);

...现在它正按预期工作:)。

6tr1vspr

6tr1vspr2#

当我们/我可以使用Laravel时,它是如此简单,因为它自动在文件夹中带有**.htaccess**文件,除了使用Laravel之外,您还可以使用cPanel。

.htaccess文件应包含以下规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.+)$ index.php/$1 [L]

相关问题