gpt4 book ai didi

.htaccess - 仅使用 .htaccess 使 Symfony2 在共享主机上工作

转载 作者:行者123 更新时间:2023-12-04 05:57:23 26 4
gpt4 key购买 nike

我已经搜索了 4 天,但找不到可行的解决方案。
我想让 Symfony2 在没有访问命令行或 httpd.conf 的情况下在共享主机上工作(无法设置虚拟主机)。我所能做的就是编辑 .htaccess 文件。在我的 web 根目录中,我还有一些其他项目(如论坛)。目录结构为:

public_html
|-forum
|-ox
'-Symfony
|-app
|-bin
<...>

我可以让它在 dev ant prod 环境中工作(路由运行良好),但它不加载任何 Assets (js、css、图像)。在错误日志中总是相同的:
request.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /bundles/acmedemo/images/welcome-demo.gif" (uncaught exception)

如果 Assets 不是从包中加载,而是在 Twig 中加载,也会发生同样的情况:
{{ asset('css/main.css') }}

然后它结束了
request.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /css/main.css" (uncaught exception)

我在 public_html 中的 .htaccess 是:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# DEV ENVIRONMENT #
RewriteRule ^$ Symfony/web/app_dev.php [QSA]
RewriteRule ^(.*)$ Symfony/web/app_dev.php/$1 [QSA,L]

# PROD ENVIRONMENT #
#RewriteRule ^$ Symfony/web/app.php [QSA]
#RewriteRule ^(.*)$ Symfony/web/app.php/$1 [QSA,L]

任何建议如何使事情正确?

最佳答案

有趣的问题。在挖掘代码后,我找到了以下解决方案。

创建一个名为 PathPackage.php 的类在 src/Vendor/YourBundle/Templating/Asset包含以下代码的文件夹。

<?php

namespace Vendor\YourBundle\Templating\Asset;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Templating\Asset\PathPackage as BasePathPackage;

class PathPackage extends BasePathPackage
{
/**
* Constructor.
*
* @param Request $request The current request
* @param string $version The version
* @param string $format The version format
*/
public function __construct(Request $request, $version = null, $format = null)
{
parent::__construct("/Symfony", $version, $format);
}
}

然后在您的 app/config/config.yml添加以下参数。
parameters:
// ...
templating.asset.path_package.class: Vendor\YourBundle\Templating\Asset\PathPackage

现在它将附加 /Symfony到 Assets 网址参数。

总结 asset Twig 函数调用 getUrl确定url的方法。由 this 扩展类(class)。类的对象在 templating.helper.assets 期间作为参数传递服务创建。幸运的是 PathPackage 类是 configurable .所以解决方案是可能的:)。

关于.htaccess - 仅使用 .htaccess 使 Symfony2 在共享主机上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com