我在symfony 2中完成了我的申请 现在我想从网址中删除web / app_dev.php /。
我读完这篇文章后就这样做了:
php app/console cache:clear --env=prod --no-debug
并添加.htaccess:
DirectoryIndex app.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
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]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /app.php/
</IfModule>
</IfModule>
在此之后我可以使用url:localhost / test / web / 但这不完全是我的目标。我也想删除网页。
此后又出现了另一个问题。当我使用localhost / test / web /访问页面时,缺少一些样式表,但在app_dev.php中,一切看起来都不错。
我的问题是,如何从网址中删除/ web /? 我怎么能丢失样式表?
答案 0 :(得分:4)
要删除网页,您只需修改您的apache配置即可将网站设为根目录。
DocumentRoot /yourpath/www/web
<Directory /youpath/www/web/>
Apache Virtual Host Complete配置的例子:
<VirtualHost *:80>
ServerName www.yourdomain.com
DocumentRoot /yourpath/www/web
<Directory /yourpath/www/web>
Options FollowSymLinks
AllowOverride None
Require all granted
Allow from All
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app.php [QSA,L]
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/your_site.error.log
CustomLog ${APACHE_LOG_DIR}/your_site.log combined
</VirtualHost>
在制作中,您应删除app_dev.php
并设置为根目录symfony web文件夹
注意:我不添加<IfModule mod_rewrite.c></IfModule>
因为如果你没有它,你需要apache通知你缺少这个模块。
答案 1 :(得分:2)
要删除/web
部分,您可以另外设置RewriteBase
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /web/
...
...或者将DocumentRoot
直接设置为apache web
配置中的VirtualHost
文件夹。
prod
环境中缺少的样式表可以通过调用assets:install
命令来解决。
dev
symfony将直接从捆绑的Resources/public
个文件夹提供文件,因为默认config_dev.yml
包含assetic.use_controller: true
。
出于性能原因,默认生产配置为assetic.use_controller: false
。资产不会在每次请求时通过symfony重新编译和提供。
现在捆绑包的Resource
文件夹中的资源在被移动/符号链接到web
文件夹后才能访问,您可以在其中找到assets:install
和{{1命令。