Проблема с переписыванием / очисткой URL-адресов в моде
Вопрос
Я использую установку drupal 4.7 в течение многих лет, и недавно у меня возникла проблема.То есть переписанные URL-адреса теперь отображают эти символы:?q= в каждом URL-адресе, сгенерированном drupal следующим образом: 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>
Может ли в этом быть проблема?Если да, то есть какие-нибудь идеи по исправлению?
Решение
Я не думаю, что твой фрагмент вызывает это. Он только читает из базы данных; он не вносит изменения в URL. Mod_rewrite все еще включен? Это может быть вызвано недавним изменением конфигурации сервера. Проверьте вывод phpinfo()
.
Кстати, вариант $absolute
для url()
передан как отдельный аргумент в Drupal 4.7, а не в массиве $options
. Ваш звонок должен быть:
url($path, $absolute=TRUE);
Другие советы
Я думаю, что твои чистые URL просто сломаны. Если у вас не включены чистые URL-адреса, все ваши URL-адреса будут выглядеть как http://example.com/?q=/foo/bar/baz
. Правила перезаписи переводят запросы из http://example.com/foo/bar/baz
в http://example.com/foo/bar/bazz
для внутренней обработки.
Вам нужно вернуться и убедиться, что ваши правила перезаписи все еще работают (можете ли вы даже перейти на <=>?) и что в Drupal включены чистые URL.
Зайдите в admin / settings и убедитесь, что функция Clean URLs включена.
Попробуйте следующее:
Снова загрузите неизмененный файл .htaccess в корневой каталог сайта
Убедитесь, что в вашем apache доступен mod_rewrite.Если у вас есть доступ к оболочке и это компьютер с Ubuntu / Debian, просто сделайте
a2enmod перезаписать
Проверьте, включена ли эта опция в разделе администратор / настройки
Создайте простой php-файл в корневой папке и введите:
phpinfo();
Затем просто посмотрите, работает ли модуль.