Я использую 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" тоже не работает. Он работает только на руте. Любая помощь?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ Это настраивается в 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/» связана с ответом на другой вопрос SO, у которого была аналогичная проблема.
Я также пробовал со следующим .htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]
F3::set('pagenum', @pagenum);
выглядит неправильно. Это вызовет синтаксическую ошибку. Файлыindex.php
и.htaccess
находятся в папке"C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"
? Они оба должны быть в одном и том же месте. Кроме того, если сообщениеThe requested URL /1 was not found on this server.
не выделено курсивом, то ошибка исходит от Apache, а не от Fat-Free. - person bcosca   schedule 22.07.2012