Symfony2 - 从URL隐藏'web'目录



我已经在共享托管中部署了一个Symfony2项目。

我只能通过以下网址访问:

  • http:mydomain/subdirectory/web
  • http:mydomain/subdirectory/web/page1
  • 等...

我希望通过以下网址访问:

  • http:mydomain/subdirectory
  • http:mydomain/subdirectory/page1

我在Web目录中只有此规则的默认值.htaccess:

重新撰写

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]
RewriteRule .? %{ENV:BASE}/app.php [L]

有人可以告诉我我该怎么做?

tkanks提前

您必须配置Web服务器以使用web作为应用程序的文档根,而不是安装Symfony的基本目录。对于Apache,那将是DocumentRoot指令。

# wrong
DocumentRoot /var/www/MY-SYMFONY-SITE/
# right
DocumentRoot /var/www/MY-SYMFONY-SITE/web/

如果您无法访问该指令,则ISP应提供一个工具来设置文档根,例如通过Web界面。如果您根本无法更改文档root,则不应在该服务器上运行Symfony。

如果您尝试将安装目录作为文档root(理论上可能是可能的(运行Symfony,则您正在创建一个巨大的安全问题,因为敏感信息(例如app目录中的配置文件(将是世界上可读的。

最新更新