【问题标题】:Fat-Free Framework mod rewrite doesn't work无脂肪框架 mod 重写不起作用
【发布时间】:2015-02-02 12:43:10
【问题描述】:

我正在尝试在 MAMP 上运行一个带有 Fat-Free Framework 的 php 项目,该项目在 Yosemite 10.10.1 上运行。 我在 MAMP Web 根文件夹“htdocs”中有所有项目文件,所有 fatfree 项目文件都位于 fatfree-master 目录中。

具体的目录位置是:htdocs/libs/FatFreeFramework/fatfree-master

我已成功将数据库导入 phpmyadmin。它的大小为 2.5mb,但在上传过程中没有出现错误,所以我认为大小根本不是问题!

我在 apache 上设置了一个虚拟主机,现在文件 httpd-vhosts.conf 看起来像这样:

ServerName localhost

DocumentRoot “/Applications/MAMP/htdocs”

<Directory "/Applications/MAMP/htdocs">
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Order allow,deny
    Allow from All
</Directory>

ErrorLog /Applications/MAMP/logs/error.log

CustomLog /Applications/MAMP/logs/access.log 结合

按照these 的说明启用 mod 重写,我编辑了 .htaccess 文件,现在看起来像这样:

重写引擎开启

RewriteBase /libs/FatFreeFramework/fatfree-master/

RewriteCond %{REQUEST_FILENAME} !-l

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .* /libs/FatFreeFramework/fatfree-master/index.php [L,QSA]

我修改了rewrite base指向/[dirname]/,然后将RewriteRule改为/[dirname]/index.php

在 httpd.conf 中,我将目录编辑为 AllowOverride All 但我仍然无法让项目在浏览器上运行。

我注意到有 2 个 .htaccess 文件,一个在 htdocs 目录,另一个在 fatfree-master 目录!

为了在 fatfree-framework 上启用 mod 重写,我必须编辑其中的哪一个?

我是否正确指向了 index.php 的路径?

【问题讨论】:

  • 不要更改 RewriteRule 的路径。它应该简单地保留 index.php。 Rewritebase 用于分配路径。
  • 感谢您的回复!

标签: php .htaccess mod-rewrite document-root fat-free-framework


【解决方案1】:

使用这个 .htaccess 就可以了。

RewriteEngine On
RewriteCond %{REQUEST_URI} \.ini$
RewriteRule \.ini$ - [R=404]
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

【讨论】:

    【解决方案2】:

    只有 .htaccess 重要的是您从浏览器访问的目录中的那个(在您的情况下,在输入 localhost 之后,它应该是 htdocs 中的那个。

    其次,检查 phpinfo() 函数是否启用了 mod_rewrite。如果没有,请启用它。

    最后,我认为你应该将RewriteBase 设置为/

    您还可以尝试的一件事(因为我不确定)是在RewriteEngine On 之后添加Options +FollowSymLinks

    【讨论】:

      【解决方案3】:

      您是否在 Apache 上启用了 mod_rewrite 模块?

      我相信它位于 httpd.conf 文件中,您需要在其中取消注释 LoadModule mod_rewrite 行。

      【讨论】:

      • 是的,首先我取消了 LoadModule mod_rewrite 行的注释,然后我编辑了 .htaccess 文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多