Pregunta

Ok. Así que estoy construyendo este sitio al que se puede acceder a través de dos dominios diferentes. Entonces no puedo usar RewriteBase en mi .htaccess. Las reglas (a continuación) que uso para solucionar este problema parecen funcionar bien. Sin embargo, cuando uso la siguiente configuración de .htaccess en mi cuadro local con URLS limpias (WAMP), todo funciona bien, pero en el momento en que lo uso en el servidor en vivo (LAMP de alojamiento compartido) cada página a la que navego muestra la página de inicio (el uno debajo del índice, supongo) a pesar de que la URL en el navegador se está actualizando claramente.

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain1.com/(.*)$
  RewriteRule ^(.*)$ /domain1.com/index.php?q=$1 [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain2.com/(.*)$
  RewriteRule ^(.*)$ /domain2.com/index.php?q=$1 [L,QSA]
</IfModule>

Cualquier ayuda o ideas son muy apreciadas.

  • Luke
¿Fue útil?

Solución

Probablemente lo mejor que puede hacer es reproducir el problema en su caja local y activar RewriteLogLevel para que pueda ver lo que está sucediendo. (Dado que generalmente no puede cambiar el nivel de registro en el alojamiento compartido)

Es posible que pueda "simular" el problema haciendo una reescritura de directorios en su configuración principal de Apache. (¡El alojamiento compartido obviamente hace su propia reescritura antes de llegar al .htaccess!) Si no puede reproducir el problema, es posible que deba iniciar la depuración de prueba y error en el servidor remoto. Esto es feo pero si es tu única opción:

Use el indicador R (redirigir) en sustituciones para enviar cualquier URL reescrita a su navegador. Use TELNET (o un complemento de navegador apropiado) para inspeccionar las respuestas HTTP.

¡No olvides escapar de los puntos en expresiones regulares!

Como nota al margen, el patrón RewriteRule coincide antes que los RewriteConds por encima. Este tipo de configuración es probablemente mejor para el rendimiento:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/domain1\.com/(.*)$ /domain1.com/index.php?q=$1 [L,QSA]
#                     ^ should be escaped

Tenga en cuenta que no he probado esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top