Tengo un sitio multilenguaje y multidominio. Se ejecuta a través de una instalación única de CMS (Drupal), por lo que tengo un único directorio raíz. Entonces, si tengo un archivo robots.txt estático, solo puedo mostrar los archivos de un solo dominio, que yo sepa.
¿Podría poner una línea en .htaccess?
Redirect 301 /robots.txt /robots.php
(o instrucciones equivalentes y, por favor, indique cuál de ellas está permitida)
por lo que redirige a un archivo php dinámico, donde puedo servir diferentes contenidos de acuerdo con el $_SERVER['HTTP_HOST']
?
Y la misma pregunta para sitemap.xml , por lo que puedo servir un sitemap.php dinámico que indica diferentes enlaces para cada dominio diferente.
El problema con no usar .txt y .xml es, como se mencionó, que todos los dominios comparten un único directorio físico en la computadora del servidor.
Respuestas:
Puede hacer que cualquier archivo sea dinámico. La mejor manera de hacerlo no es a través de redireccionamientos, sino a través de reglas de reescritura.
De esa manera, lo potencia con un script dinámico, pero la URL no cambia. La mayoría de los rastreadores (incluido Googlebot) seguirán los redireccionamientos para robots.txt , pero algunos rastreadores se confundirán si introduce redireccionamientos.
Tenga en cuenta que incluso si lo alimenta con PHP, su robots.txt debería parecer estático para cada rastreador para cada dominio. Está bien servir diferentes contenidos para diferentes dominios, o incluso para diferentes agentes de usuario. Sin embargo, servir contenido diferente al azar o según la hora del día realmente puede confundir a los rastreadores de los motores de búsqueda y arruinar su SEO.
Los sitemaps están bien nombrados como quieras. Puede redirigirlos o usar una regla de reescritura para activarlos dinámicamente en la misma URL. También puedes nombrarlos como
Luego refiérase a ellos en robots.txt :
o enviarlos a los motores de búsqueda manualmente a través de sus herramientas de webmaster o consola de búsqueda.
fuente
RewriteRule ^robots\.txt$ robots.php [L]
sin el símbolo \.^/robots\.txt$
) sería necesario si esta directiva estuviera en la configuración del servidor, pero sí, no coincidirá en los archivos .htaccess por directorio. El prefijo de barra en la sustitución (es decir/robots.php
) es opcional en este caso.Sí, de la misma manera cualquier solicitud puede ser "dinámica".
Sin embargo, no redirigiría (como en su código de ejemplo), debería reescribir internamente usando mod_rewrite. (Lo mismo que probablemente Drupal ya está haciendo).
Por ejemplo, en su archivo raíz .htaccess:
RewriteEngine
solo debe ocurrir una vez (aunque en realidad no importa si ocurre varias veces).Solo tiene que asegurarse de que no entre en conflicto con otras directivas en su archivo .htaccess. Por lo tanto, esto probablemente debería estar cerca del inicio del archivo, ciertamente antes de su controlador frontal .
fuente
Hacer que el archivo del mapa del sitio sea dinámico está bien: es una buena manera de actualizar automáticamente los mapas del sitio.
Hacer que el archivo robots.txt sea dinámico (¡para el mismo host! Hacer esto para hosts separados es esencialmente solo un archivo robots.txt normal para cada uno de ellos) probablemente causaría problemas: no se rastrea cada vez que se rastrea una URL desde el sitio , por lo que puede suceder que la versión "incorrecta" esté almacenada en caché. Por ejemplo, si hace que su archivo robots.txt bloquee el rastreo durante el horario comercial, es posible que luego se almacene en caché y se siga durante un día, lo que significa que nada se rastrea (o alternativamente, se almacena en caché cuando se permite el rastreo). Google rastrea el archivo robots.txt aproximadamente una vez al día para la mayoría de los sitios, por ejemplo.
fuente
No es necesario crear sitemap.php porque: 1. Para cada idioma, puede ejecutar un archivo sitemap.xml separado y especificar cada uno en las consolas de los motores de búsqueda. 2. Los archivos de mapa de sitio estándar se pueden reescribir regularmente para incluir contenido reciente y los hace dinámicos, por lo que no se requiere .php. Depende del mecanismo de actualización interno y del cron recrear el mismo archivo con la extensión estándar .xml
Los archivos Sitemap.xml son estáticos y solo las actualizaciones los hacen dinámicos; no se actualizan en tiempo real. Es posible que haga que se reescriban cada minuto, pero no es necesario porque: 1. Google no lo comprobará en menos de 1 hora desde el último envío 2. Cuando los archivos del mapa del sitio son grandes, vuelva a escribirlos a menudo hará que el rendimiento del servidor sea kaput.
Cuando hay un gran volumen de datos y el archivo del mapa del sitio supera los 50 MB, se requiere un sistema con múltiples mapas del sitio. Significa que sitemap2,3 ... .xml se agregará a la lista del archivo principal, pero el contenido de estos archivos también permanece fijo hasta que estos archivos se vuelvan a crear (por ejemplo, cron).
También mencionar que una vez que un motor de búsqueda haya accedido al archivo, no volverá a acceder a él muy rápido (a menos que se haga manualmente). Confirma que no es necesario en ningún caso crear una actualización en tiempo real de sitemap.php, ya que un sitemap.xml normal puede ser dinámico por sí solo, actualizándose con nuevo contenido durante el día o una semana.
No puedo pensar en ningún profesional que use un sitemap.php. No servirá de nada, ya que hay otras formas mejores / adecuadas de usar estos archivos.
fuente