Мод переписать / очистить проблему URL - PullRequest
0 голосов
/ 04 мая 2009

Я уже много лет пользуюсь установкой drupal 4.7, и у меня недавно возникла проблема. То есть, переписанные URL теперь отображают следующие символы:? Q = в каждом сгенерированном drupal URL следующим образом: http://sitename.com/?q=path/alias, где раньше это было бы: http://sitename.com/path/alias.

Мое лучшее предположение относительно того, почему это может происходить, заключается в том, что я недавно начал использовать некоторый PHP-код для добавления контекстно-ориентированного оформления ссылок в несколько боковых блоков. Вот код:

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

Или совсем недавно:

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

Может ли это быть проблемой? Если да, есть идеи по поводу исправлений?

Ответы [ 4 ]

1 голос
/ 04 мая 2009

Я думаю, что ваши чистые URL просто сломаны. Если у вас не включены чистые URL-адреса, все ваши URL-адреса будут выглядеть как http://example.com/?q=/foo/bar/baz. Правила перезаписи переводят запросы из http://example.com/foo/bar/baz в http://example.com/?q=/foo/bar/baz для внутренней обработки.

Вам нужно вернуться и убедиться, что ваши правила перезаписи все еще работают (вы можете даже перейти к http://example.com/foo/bar/bazz?) И что в Drupal включены чистые URL.

1 голос
/ 09 мая 2009

Зайдите в admin / settings и убедитесь, что Clean URLs включен.

0 голосов
/ 15 мая 2009

Попробуйте следующее:

  1. Загрузить неизмененный файл .htaccess снова в корень сайта

  2. Убедитесь, что ваш apache имеет доступный mod_rewrite. Если у вас есть доступ к оболочке, и это машина с Ubuntu / Debian, просто выполните

    a2enmod rewrite

  3. Проверьте, включена ли опция в admin / settings

  4. Создайте простой файл .php в корневой папке и введите:

    phpinfo ();

Тогда просто посмотрите, работает ли модуль.

0 голосов
/ 04 мая 2009

Я не думаю, что ваш фрагмент вызывает это. Он только читает из базы данных; он не вносит изменения в URL. Mod_rewrite все еще включен? Это может быть вызвано недавним изменением конфигурации сервера. Проверьте вывод phpinfo().

Кстати, опция $absolute для url() - это , передаваемый как отдельный аргумент в Drupal 4.7, а не в массиве $options. Ваш звонок должен быть:

url($path, $absolute=TRUE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...