Pregunta

He estado utilizando una instalación de drupal 4.7 durante muchos años y he tenido un problema reciente. Es decir, las URL reescritas ahora muestran estos caracteres:? Q = en cada URL generada por drupal de la siguiente manera: http://sitename.com/?q=path/alias , donde antes sería: http : //sitename.com/path/alias .

Mi mejor conjetura de por qué esto podría estar sucediendo es que recientemente comencé a usar algún código PHP para agregar un estilo de enlace específico al contexto dentro de unos pocos bloques laterales. Aquí está el código:

<?php   $alias= $_GET['q']; ?>

<a <?php $pos=strpos($alias,"1234"); // node number
if(!$pos == false) {
echo 'style="color:black"'; 
} ?> href="internal/link/alias">Internal Link</a>

O más recientemente:

<?php $path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$alias = url($path, array('absolute' => TRUE)); ?> 

<a <?php $pos=strpos($alias,"internal/link/alias"); 
if(!$pos == false) {
echo 'style="color:black"';
} ?> href="internal/link/alias">Internal Link</a>

¿Podría ser este el problema? Si es así, ¿alguna idea sobre soluciones?

¿Fue útil?

Solución

No creo que tu fragmento lo esté causando. Solo lee de la base de datos; no realiza cambios en las URL. ¿Mod_rewrite todavía está habilitado? Esto puede deberse a un cambio reciente en la configuración del servidor. Verifique el resultado de phpinfo().

Por cierto, la opción $absolute para url() es se aprobó como argumento separado en Drupal 4.7, no en la matriz $options. Su llamada debe ser:

url($path, $absolute=TRUE);

Otros consejos

Estoy pensando que tus URL limpias simplemente están rotas. Cuando no tiene activadas las URL limpias, todas sus URL se verán como http://example.com/?q=/foo/bar/baz. Las reglas de reescritura traducen las solicitudes de http://example.com/foo/bar/baz a http://example.com/foo/bar/bazz para ser procesadas internamente.

Debe regresar y asegurarse de que sus reglas de reescritura sigan funcionando (¿puede incluso ir a <=>?) y que Drupal tenga activadas las URL limpias.

Vaya a admin / settings y asegúrese de que Clean URLs esté activado.

Pruebe lo siguiente:

  1. Vuelva a cargar un archivo .htaccess no modificado en la raíz del sitio

  2. Asegúrese de que su apache tenga mod_rewrite disponible. Si tiene acceso de shell y es una máquina Ubuntu / Debian, simplemente haga

    reescritura de a2enmod

  3. Compruebe si la opción está habilitada en admin / settings

  4. Cree un archivo .php simple en la carpeta raíz y escriba:

    phpinfo();

Luego solo vea si el módulo está funcionando.

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