Mod reescrever / urls limpas problema
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?
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:
-
Fazer upload de um arquivo .htaccess não modificada para a raiz do site novamente
-
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 ??p>
-
Verifique se a opção é habilitado em admin / configurações
-
Crie um arquivo .php simples na pasta raiz e digite:
phpinfo ();
Em seguida, basta ver se o módulo está funcionando.