ian*_*ian 6 php .htaccess mod-rewrite fat-free-framework
我正在尝试设置和学习PHP的Fat Free Framework. http://fatfree.sourceforge.net/
设置相当简单,我在使用MAMP的机器上运行它.
我能够让'hello world'示例只运行fin:
require_once 'path/to/F3.php';
F3::route('GET /','home');
function home() {
echo 'Hello, world!';
}
F3::run();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试添加第二部分时,它有两条路线:
require_once'F3/F3.php';
F3::route('GET /','home');
function home() {
echo 'Hello, world!';
}
F3::route('GET /about','about');
function about()
{
echo 'About Us.';
}
F3::run();
Run Code Online (Sandbox Code Playgroud)
如果我尝试第二个URL,我会收到404错误:/ about
不确定为什么其中一个mod_rewrite命令工作而不是另一个命令.
以下是我的.htaccess档案:
# Enable rewrite engine and route requests to framework
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]
# Disable ETags
Header Unset ETag
FileETag none
# Default expires header if none specified (stay in browser cache for 7 days)
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A604800
</IfModule>
Run Code Online (Sandbox Code Playgroud)
小智 11
所以我的朋友实际上帮我解决了这个问题.我遇到了完全相同的问题,但基本上我也在使用MAMP,并且fatfree在MAMP的htdocs中的所有我的Fat Free文件都在dir中.
解决方案是你需要修改RewriteBase指向/[dirname]/而不是只是/然后RewriteRule改为/[dirname]/index.php.
我的.htaccess看起来像这样:
RewriteEngine On
RewriteBase /fatfree/
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /fatfree/index.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)
在设置之后,您可以完全按照Fat Free文档中的示例进行操作,它将像魅力一样工作.这困扰了我一段时间,这就是它所需要的一切.此外,如果您正在使用MAMP,请编辑该httpd.conf文件/Applications/MAMP/conf/apache并确保更改以下内容:
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
Run Code Online (Sandbox Code Playgroud)
至
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)
基本上None改为All.