1

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

我在网站的根目录中有文件夹“帮助”。在这个文件夹中,我有 Symfony 和以下文件夹:app、src、vendor 和 web。'web' 是具有处理请求的 app.php 控制器的公共文件夹。因此,使用 web 文件夹中的默认 .htaccess,我可以通过以下方式访问帮助台系统:www.example.com/help/web 控制器 app.php 捕获请求并重定向到路由“登录”(www.example .com/help/web/login)。我想通过 URL 访问系统: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>

并删除 web 文件夹中的 .htaccess,所以当我尝试 www.example.com/help 时,URL 没有改变,我知道 web 文件夹中的 app.php 被访问是因为我在代码。

结果是:

    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.

“字符串测试”是我放在 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);

我想我快到了但我不知道我做错了什么。

4

1 回答 1

2

Make a entry in a .htaccess. Suppose you have a website abc.com. You want to run another website in directory. Then create a .htaccess in parent directory pointed to abc.com

Folder Structure

   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]
于 2013-08-24T08:24:19.763 回答