胖子免费php在子目录中,路由无法正常工作

时间:2015-03-20 18:27:14

标签: mod-rewrite apache2 fat-free-framework

我正在举办一个无脂肪的网站,但我遇到了在子目录中运行的问题

这是我的htaccess:

RewriteEngine On
RewriteBase /~site/
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /~site/index.php [L,QSA]

这是我使用

的路线
GET /*/index=App->show_home

我必须在其余部分之前添加/*,因为脚本会将子文件夹作为路径的一部分包含在内。

我认为这是有效的,但是一旦我更新了dns设置,该网站将不再拥有这些,我必须更新它。

是否有可以在某处使用的设置允许两种方案都有效?

1 个答案:

答案 0 :(得分:2)

基本要求的.htaccess是这样的:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]

请注意:

  • 不需要RewriteBase
  • index.php与.htaccess
  • 位于同一文件夹中

但是当使用mod_userdir时,需要更多配置:

  1. 明确设置RewriteBase(正如您所做的那样):RewriteBase /~myuser/
  2. 在用户目录Apache配置中,确保已启用FollowSymlinksAllowOverride All。它们分别允许遵循~链接并处理.htaccess。
  3. 以下是Apache配置用户目录的示例:

    <Directory "/Users/myuser/Sites/">
        Options FollowSymlinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    

    回答你的上一个问题:

      

    是否有可以在某处使用的设置允许两种方案都有效?

    答案是:不,只要您从用户目录提供网站服务即可。将您的网站移至DocumentRoot,一切都将顺利进行。