.htaccess应该如何用于Symfony路由

时间:2016-04-02 21:51:58

标签: php apache .htaccess symfony

我一直在尝试使用Symfony的一些组件,而且它的功能相对较好。我想通过一堆谷歌搜索后,我需要将.htaccess文件更改为至少这个以便它可以工作:

<IfDefine APACHE2>
    AcceptPathInfo on
</IfDefine>
<Files "index.php">
    Options +Includes
    SetOutputFilter INCLUDES
    AcceptPathInfo On
</Files>

然而,现在每当我想进行header()调用或拥有img / script / stylesheet标签时,我需要在进入路径之前使用../。当我有一个变量名(即路径看起来像这样:index.php/article/32)我需要../../才能进入src或href的其余路径。
我是否设置了.htaccess文件错误或者还有其他我需要做的事情?

所以img标签会是这样的:

<img href="../PATH_TO_IMAGE">

因为没有占位符并且像这样:

<img href="../../PATH_TO_IMAGE">

当占位符东西中有变量时。

因为我怀疑它不应该是这样的。
我的路由如下:

$routes = new RouteCollection();
$routes->add('loginuser', new Route('/login', array('controller' => 'registeruser', 'permission' => Permissions::$public)));

(我在一些网站上看过教程,遗憾的是我现在似乎无法找到它)

编辑:我只使用路由组件和Http Foundation组件。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

所以我通过从Symfony添加Asset组件并创建一个PathPackage来解决这个问题,该PathPackage首先指向根目录并进一步指向web文件夹。

$package = new PathPackage('/ENTER_FURTHER_PATH_HERE/', new EmptyVersionStrategy());

echo '<img src="'. $package->getUrl('Images/icon.png') . '">';
echo '<a href="' . $package->getUrl('index.php/WHATEVER') . '">Link name</a>';
echo '<a href="' . $package->getUrl('index.php') . '">Home</a>';
echo '<script src="'. $package->getUrl('Scripts/JAVASCRIPT_NAME') .'"></script>';
echo '<link src="'. $package->getUrl('CSS/STYLESHEET_NAME') .'">';

(你也可以跳过PathPackage并且这样做,因为它不是绝对必要的)

echo '<a href="/ENTER_FURTHER_PATH_HERE/index.php">Home</a>;

无论如何,这就是我解决它的方式。如果有人知道更好的方式,请随时告诉我。非常感谢。