来自根文件夹的Silex的htaccess无法正常工作

时间:2017-05-25 13:15:36

标签: php apache .htaccess silex

我试图搜索并使用已经发布的解决方案,但现在没有任何效果,我尝试了很多我能做的但是没有工作。

这些是应用程序目录:

localhost/
  root/
    data/
    app/
    public/
      index.php
    .htaccess

htaccess是这样的:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteBase /root/public/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
</IfModule>

第一个问题是,如果我去localhost / root / public网站按预期工作,但在网址中我仍然看到&#39; public&#39;我想删除。

第二个问题是我的目标是从url localhost / root /转到索引,但是现在,如果我去那里它只显示文件夹中的文件。

谢谢。

根据要求,这些是我使用的路线:

$app->get('/', function () use ($app) {
    // code
})->bind('home');

$app->get('/about-me', function () use ($app) {
    // code
})->bind('about-me');

1 个答案:

答案 0 :(得分:1)

您的系统中存在两个错误。

第一: 位于根文件夹中的.htaccess应该用于删除“公共”文件夹。 URL的一部分。代码如下:

RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]

它基本上抓住每条路线并将其重定向到公共文件夹,完全按照您的意愿!

第二: 您应该在&#39; / public&#39;中创建另一个.htaccess文件。用于将所有内容重定向到index.php文件的文件夹。该代码应如下所示:

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

您最终应该采用以下结构:

localhost/
  root/
    .htaccess (removes 'public')
    data/
    app/
    public/
      index.php
      .htaccess (forward to index.php)

这应该可以解决你的问题。如果确实如此,请将我的答案标记为解决问题的答案,将问题标记为已完成。如果没有,请评论您遇到的其他问题!