文件夹内的Symfony2项目使用.htaccess隐藏web / app.php

时间:2013-08-22 17:09:06

标签: php apache .htaccess symfony mod-rewrite

我有使用Symfony2制作的帮助台项目,我想将项目托管在我网站的一个文件夹中隐藏" web / app.php"来自URL。我无法使用apache创建虚拟主机,因此我需要将.htaccess与RewriteRule和RewriteCond一起使用。我读书并尝试了2天没有成功。

我有文件夹' help'在网站的根目录中。在这个文件夹里面我有Symfony文件夹:app,src,vendor和web。 '网'是具有处理请求的app.php控制器的公用文件夹。因此,使用Web文件夹中的默认.htaccess,我可以访问帮助台系统:www.example.com/help/web控制器app.php捕获请求并重定向到路由' login&#39 ; (www.example.com/help/web/login)。我想使用以下网址访问系统:www.example.com/help

web文件夹中的原始.htaccess是:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

我几乎得到了我需要在帮助文件夹中创建.htacess的内容:

<IfModule mod_rewrite.c>
   Options +FollowSymlinks
   RewriteEngine On

   RewriteRule ^/suportefloripa/web/app.php - [L]
   RewriteRule ^bundles/(.*)$ /suportefloripa/web/bundles/$1  [QSA,L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ /suportefloripa/web/app.php [QSA,L]
</IfModule>

删除.htaccess内部的网络文件夹,所以当我尝试使用www.example.com/help时,网址不会改变,我知道网页文件夹中的app.php是因为&#39而被访问的;回声&#39;我在代码中写的。

结果是:

    String test

    Oops! An Error Occurred
    The server returned a "404 Not Found".

    Something is broken. Please e-mail us at [email] and let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.

&#39;字符串测试&#39;是我在app.php(Symfony框架的默认代码)中放置的回声:

<?php

echo "String test";

use Symfony\Component\ClassLoader\ApcClassLoader;
use Symfony\Component\HttpFoundation\Request;

$loader = require_once __DIR__.'/../app/bootstrap.php.cache';

// Use APC for autoloading to improve performance.
// Change 'sf2' to a unique prefix in order to prevent cache key conflicts
// with other applications also using APC.
/*
$loader = new ApcClassLoader('sf2', $loader);
$loader->register(true);
*/

require_once __DIR__.'/../app/AppKernel.php';
//require_once __DIR__.'/../app/AppCache.php';

$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);
Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

我想我几乎就在那里但我不知道自己做错了什么。

1 个答案:

答案 0 :(得分:1)

在.htaccess中输入一个条目。假设您有一个网站abc.com。您想在目录中运行另一个网站。然后在父目录中创建指向abc.com的.htaccess

文件夹结构

   abc.com->index.php
          ->symfony(symfony folder)->app
                                   ->src
                                   ->web
                                   ->vendor


RewriteEngine on

RewriteCond %{HTTP_HOST} ^abc.com$ [NC,OR]

RewriteCond %{HTTP_HOST} ^www.abc.com$ 

RewriteCond %{REQUEST_URI} !symfony/web/

RewriteRule (.*) /symfony/web/$1 [L]