Pergunta

Estou usando uma instalação do Drupal 4.7 por muitos anos, e tiveram uma colheita problema recente para cima. Ou seja, os URLs reescritos agora estão exibindo esses personagens:? Q = em cada Drupal URL gerada da seguinte forma: http://sitename.com/?q=path/alias , onde antes seria: http : //sitename.com/path/alias

.

Meu melhor palpite a respeito de por que isso pode estar acontecendo, é que eu recentemente começou a usar algum código PHP para adicionar contexto específico ligação styling dentro de alguns sideblocks. Aqui está o 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>

Ou, mais recentemente:

<?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>

Poderia ser este o problema? Se assim for, todas as idéias sobre correções?

Foi útil?

Solução

Eu não acho que o trecho está causando isso. Ele só lê a partir do banco de dados; não fazer alterações em URLs. É mod_rewrite ainda habilitado? Isso pode ser causado por uma recente alteração na configuração do servidor. Verifique a saída de phpinfo().

A propósito, o $absolute opção para url() é passado como um argumento separado em Drupal 4.7, não na matriz $options. Sua chamada deve ser:

url($path, $absolute=TRUE);

Outras dicas

Eu estou pensando que seus urls limpas são apenas quebrado. Quando você não tem URLs limpas ligado, todos os seus URLs será semelhante http://example.com/?q=/foo/bar/baz. As regras de reescrita traduzir solicitações de http://example.com/foo/bar/baz em http://example.com/?q=/foo/bar/baz a ser processada internamente.

Você precisa voltar e se certificar de que suas regras de reescrita ainda trabalho (você pode até mesmo ir para http://example.com/foo/bar/bazz?) E que o Drupal tem URLs limpas ligado.

Vá para admin / configurações e fazer URLs certeza limpa é ligado.

Tente o seguinte:

  1. Fazer upload de um arquivo .htaccess não modificada para a raiz do site novamente

  2. Verifique se o seu apache tem mod_rewrite disponível. Se você tiver acesso shell e é uma máquina Ubuntu / Debian, basta fazer

    a2enmod reescrita

  3. Verifique se a opção é habilitado em admin / configurações

  4. Crie um arquivo .php simples na pasta raiz e digite:

    phpinfo ();

Em seguida, basta ver se o módulo está funcionando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top