0

是否可以在不更改 apache 配置文件的情况下将/web目录设置为 webroot?

我尝试使用以下 .htaccess 代码,但如果我转到localhost/module/,它会显示 404 错误。但是如果我去localhost/web/module/那么一切正常。

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    sf/(.*) lib/vendor/symfony/data/web/sf/$1 [L]
   RewriteRule    ^$ web/    [L]
   RewriteRule    (.*) web/$1 [L]
</IfModule>
4

4 回答 4

1

我在根上喜欢这样:

RewriteEngine On
RewriteBase /
RewriteRule (.*) ./web/$1 [L]

并编辑 web/.htaccess 取消注释“RewriteBase /”行。

这使得所有 mysite.com/aaaa/bbbb 的工作方式都像 mysite.com/web/aaaa/bbbb

于 2010-10-13T18:36:02.470 回答
0

对的,这是可能的。将所有内容从 web/ 复制到您的文档根目录。编辑 index.php 以反映它包含的所有内容现在比以前更接近其当前目录一级(少一级 ../)。您不必编辑单个其他 Symfony 文件。

于 2010-12-12T06:38:47.230 回答
0

简短的回答:没有。

再长一点:您必须至少编辑 apache 配置以授予其访问 web/ 目录的权限,因此即使您将 web 文件夹符号链接到 /var/www,它也不起作用。

于 2010-05-22T20:30:30.527 回答
0

这很安静,类似于我的问题Symfony on virtual host (document root problem)

这是我.htaccess在项目根目录中的:

RewriteEngine On
RewriteBase /       

RewriteCond %{REQUEST_URI} ^/images/  [OR]
RewriteCond %{REQUEST_URI} ^/js/      [OR]
RewriteCond %{REQUEST_URI} ^/css/
RewriteRule ^(.*)$ /web/$1 [L]

RewriteCond %{REQUEST_URI} !^/web/
RewriteRule ^(.*)$ /web/index.php [QSA,L]

这解决了我的问题,但 symfony 尝试url_for从文档根目录生成每个 url(例如 using ),而不是像domain.com/my-article它生成的 url 那样domain.com/web/my-article
我不得不稍微修改我的PatternRouting类以修剪/web每个 url 的前缀。我认为这不是最好的解决方案,但它确实有效。

此外,如果我想访问后端应用程序,我必须始终调用/web/backend.php/,因为我不想在.htaccess.

如果您想查看我的扩展PatternRouting类源代码,我将其粘贴在这里。

于 2010-05-23T23:34:09.883 回答