Buenas,
El otro día con el nuevo .htaccess
conseguí que se quitara al menos la parte del entorno de ejecución (app.php
) pero, ¿cómo podría quitar el /web
sin un VirtualHost? La página de Symfony2 se encuentra en un servidor 1and1.
Gracias. Un saludo.
Respuestas
Pues en 1and1 hay varias formas de hacerlo pero la mas sencilla es:
Teniendo en cuenta que tu web es xxx.com
:
1. Ir al panel de administración de 1and1 2. Ir a la sección de dominios, subdominios etc y cambiar el directorio al que apunta tu web raíz:
xxx.com --> /
por esto:
xxx.com --> /web
Creo recordar que en 1and1, cuando quieres modificar el directorio hay dos opciones, seleccionar uno existente (es un select) o crear uno (es un textbox). Si en el select no encuentras /web
aunque esté creado, es un fallito que tienen ellos. Simplemente usa el textbox y mete /web
, aunque se trate de un textbox para crear uno nuevo. Si ya existe no te sobreescribe nada así que tranqui.
Ten en cuenta que estos cambios a veces tardan unos minutos.
Saludos

@CVM1989
me cuentas, saludos

@CVM1989
Muchas gracias, no había caído en esa solución tan trivial ;)

@CampoySoft
Buenas de nuevo,
Al final me ha funcionado pero claro, después de que se actualizara todo, las sentencias en las que uso asset (para los css, javascript y demás) dejan de funcionar pues apuntan dos veces a /web/web
¿qué solución habría para eso?
Gracias!!

@CampoySoft
Hola,
La aplicación symfony has de subirla directamente al antiguo raiz del servidor compartido.
En el ejemplo que habeis puesto xxx.com y esta ya incluye /web que es donde apunta ahora el hosting del servidor. Esta será la carpeta pública y todo lo que hay por debajo es la aplicación symfony.
Un saludo.

@julioalp
@julioalp no te he entendido muy bien. El problema que tengo ahora es que al hacer la solución de @CVM1989, cambiar el directorio al que apunta mi web raíz, funciona todo menos los css, js, etc (a los que referencio con la función asset) y claro ella me crea ahora la url de estos archivos incluyendo en la url la parte /web
(que ahora ya "no está ahí" pues lo hemos redirigido al raíz de mi dominio), no sé si explico lo que ocurre bien.
Un saludo.

@CampoySoft
@julioalp no te he entendido muy bien. El problema que tengo ahora es que al hacer la solución de @CVM1989, cambiar el directorio al que apunta mi web raíz, funciona todo menos los css, js, etc (a los que referencio con la función asset) y claro ella me crea ahora la url de estos archivos incluyendo en la url la parte /web (que ahora ya "no está ahí" pues lo hemos redirigido al raíz de mi dominio), no sé si explico lo que ocurre bien.
Un saludo.

@CampoySoft
Hola @CampoySoft,
Intentaré explicarme mejor.
Tenemos un hosting, que apunta a un directorio, ejemplo httpdocs
.
Subes toda tu aplicación symfony a esa carpeta.
Si pruebas, evidentemente no funciona, puesto que el directorio público de una aplicación symfony es /web
.
Como bien te dice @CVM1989 es tan fácil como cambiar la configuración en el hosting y que apunte a la carpeta httpdocs/web
Resultado
httpdocs-> app scr ... web-> app.php
Tu directorio público es /web
, donde está todo el contenido público incluido la carpeta bundles y todos los css.
En los assets imagino que apuntas a bundles/nombre_aplicacion/css/nombre.css
Dime algo ...
Un saludo.

@julioalp
Buenas,
Los assets los tengo en la carpeta /web/css/nombre.css
o /web/js/nombre.js
y hago la llamada con al función asset así:
<script src="{{ asset('js/files-handler.js') }}" type="text/javascript"></script>
Por lo que la función asset te devuelve la url con la parte /web
, que ahora ya no es puesto que ahora el hosting apunta a /web
ya directamente. ¿Se puede cambiar el comportamiento de la función asset
para no tener que modificar todos los archivos? ¿o cuáles son las buenas prácticas para esto? Porque imagino que la gente enmascarará la parte /web
de su url.
Un saludo y gracias!!

@CampoySoft
@CampoySoft Symfony define una opción de configuración llamada assets_base_urls
que permite indicar la URL base utilizada para los assets, tanto cuando se accede a ellos mediante http
como cuando se accede mediante https
. En tu caso deberías utilizar algo como lo siguiente:
# app/config/config.yml framework: templating: assets_base_urls: http: '/web' ssl: '/web'
Aquí tienes la documentación oficial sobre assets_base_urls.

@javiereguiluz
Si pones este código en tu .haccess
en la carpeta web, te funciona. Comprobado y testado por mi.
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{HTTP_HOST} ^dominio.pt$ [NC,OR] RewriteCond %{HTTP_HOST} ^www.dominio.pt$ RewriteCond %{REQUEST_URI} !^/web/.*$ RewriteRule ^(.*)$ /web/$1 [QSA,L] # Explicitly disable rewriting for front controllers #RewriteRule ^app_dev.php - [L] RewriteRule ^web/app.php - [L] RewriteCond %{REQUEST_FILENAME} !-f # Change below before deploying to production #RewriteRule ^(.*)$ /app.php [QSA,L] RewriteRule ^(.*)$ web/app.php [QSA,L] </IfModule>
Saludos

@TsubasaAkai
Holas!!!
Con estos simples pasos se puede subir una web a un servidor compartido de 1an1?
Gracias
@jcarlosweb