symfony2 - 隐藏' web'来自网址的目录

时间:2018-02-19 10:36:43

标签: .htaccess symfony

我已将symfony2项目部署到共享托管中的子目录。

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

  • http:mydomain / subdirectory / web
  • HTTP:MYDOMAIN /子目录/网络/第1页
  • 等...

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

  • http:mydomain / subdirectory
  • HTTP:MYDOMAIN /子目录/第1页

我在网络目录中只有默认的.htaccess规则:

    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]

RewriteRule .? %{ENV:BASE}/app.php [L]

有人可以告诉我,我该怎么办?

Tkanks提前

1 个答案:

答案 0 :(得分:1)

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

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

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

如果您无权访问该指令,您的ISP应提供设置文档根目录的工具,例如通过网络界面。如果您根本无法更改文档根目录,则不应在该服务器上运行Symfony。

如果您尝试使用安装目录作为文档根目录运行Symfony(理论上可行),则会产生巨大的安全问题,因为敏感信息(例如app目录中的配置文件将会是世界可读的。