我正在使用 Apache 2.2 和 PHP 5.3。我正在尝试使用 Fatfree 框架进行路由。我的 index.php 文件如下所示:
<?php
require_once 'f3/lib/base.php';
F3::route('GET /','home');
function home() {
echo F3::render('templates/index.html');
}
F3::route('GET /@pagenum','mainlist');
function mainlist() {
F3::set('pagenum', @pagenum);
echo Template::serve('templates/index.html');
}
F3::run();
?>
如果我转到“http://localhost:8080/”,它会正确呈现文件 templates/index.html,这意味着 PHP 和 Fatfree 正在工作。但是如果我去“http://localhost:8080/1”那么它就行不通了。我收到以下错误:
Not Found
The requested URL /1 was not found on this server.
如果我将第一部分更改为
F3::route('GET /anotherthing','home');
function home() {
echo F3::render('templates/index.html');
}
那么“http://localhost:8080/anotherthing”也不起作用。它只适用于根。有什么帮助吗?
MORE INFO 这是在 httpd.conf 中配置的
DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"
<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs">
Options -Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from All
</Directory>
启用了 Modrewrite:
LoadModule rewrite_module modules/mod_rewrite.so
.htaccess 看起来像:
RewriteEngine On
RewriteBase /fatfree/
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /fatfree/index.php [L,QSA]
“/fatfree/” base 是由于另一个具有类似问题的 SO question 中的答案。
我还尝试了以下.htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]