Проблема с переписыванием / очисткой URL-адресов в моде

StackOverflow https://stackoverflow.com/questions/820856

  •  03-07-2019
  •  | 
  •  

Вопрос

Я использую установку 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 включена.

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

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

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

    a2enmod перезаписать

  3. Проверьте, включена ли эта опция в разделе администратор / настройки

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

    phpinfo();

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top