繁体   English   中英

symfony2-从网址中删除/ web

[英]symfony2 - remove /web from urls

我正在管理一个以symfony 2.2编写的网站,该网站托管在网络托管服务上。 我几乎是Web开发中的一名新手,所以我可能犯了一些愚蠢的错误。

无论如何,我希望能够访问不带/ web部分的站点。 例如:“ domain.com/symfony_site/web/mypage”->“ domain.com/symfony_site/mypage”。

让我从一开始就说:我无法在服务器上手动配置apache,我只能通过FTP访问它。 我想我只剩下.htaccess文件解决方案了。

我已经尝试了在Internet上找到的所有解决方案(大多数都是从本站点获得的),但没有一个起作用。 是的,启用了mod_rewrite。

我觉得最简单的解决方案是在网站的根目录(其中还包含/ web文件夹)中添加一个.htaccess文件,其内容如下:

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

而且这似乎确实可以正确重定向,但是随后出现“在此服务器上找不到所请求的URL网页/我的网页”。 如果我访问“ domain.com/symfony_site/mypage”。

所需的主页'domain.com/symfony_site'intead给出了“您无权访问此服务器上的/ symfony_site /。”,因此,看来这甚至无法正确重定向。

首先,您需要将.htaccess从Web目录移动到根目录( DocumentRoot )。

然后,打开移动的.htaccess ,搜索所有出现的/app并将其替换为/web/app
.htaccess (无注释)应如下所示:

DirectoryIndex app.php

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    # Rewrite all other queries to the front controller.
    RewriteRule .? %{ENV:BASE}/web/app.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /web/app.php/
    </IfModule>
</IfModule>

现在,可以使用项目根目录作为DocumentRoot正确浏览您的应用程序。

此更改可能涉及调整加载资产的方式。

注意:如果您无法更改应用程序的DocumentRoot以使其指向Web目录,则这是一种快捷方式。

symfony2应用程序旨在使文档根目录位于web /

这是apache vhost的示例配置。

<VirtualHost *:80>

  ServerName your.domain
  DocumentRoot "/path/symfony/web"

  <Directory "/path/symfony/web">
    Options Indexes FollowSymLinks
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

因此您不需要重写规则

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM