Jump to content

Почему могут не работать ЧПУ


Recommended Posts

Короткие адреса не работают: выбрасывает на главную страницу. При отключении - все ок.

Почему так?

На другом хостинге все ок. На этом - register_globals=Off

Link to post
Share on other sites
support

Даже не знаю, в чём дело.

Ты сравни настройки php и там и там.

В Админке - Настройки - Инсрументы - Инфомарция о сервере.

Посмотри опции magic_quotes

Может они как-то влияют.

Link to post
Share on other sites
  • 3 months later...

Привет, Саша!

У меня похожая ситуация, только не выбрасывает на главную, а пишет Не могу прочитать URL. Когда отключаю короткие адреса, все работает нормально, только в информационых страницах и статьях не работают ЧПУ, в каталоге-работают! А вообще можешь сказать что должно быть включено на сервере что-бы работали короткие адреса - напишу на хостинг - может включат! На этом хостинге register_globals=on

Link to post
Share on other sites

Вообще разницы ведь нет, включа или нет опция короткие url.

Разница лишь в том, что сиволы ? и & заменяются на / в адресе.

Это нужно для того что б соответсвовать стандарту w3.org

А ты можешь создать файл server_info.php с таким содержимым:


<?php phpinfo(); ?>
[/code]

и открыть в браузере этот файл, предварительно закачав к себе на серер.

Затем сохрани страницу получившуюся и выложи здесь, что б я мог посмотреть, какие у тебя настройки php на сервере.

Link to post
Share on other sites

Так подойдет?

Если не получится у тебя прочитать - дам ссылку на этот файл!

Link to post
Share on other sites

Вроде нормально.

Ну ты тогда просто не включай короткие адреса.

Как я сказал, разница лишь в символах ? & которые меняются на /

А так, что включено что выключено одно и тоже.

Link to post
Share on other sites

Спасибо Саша! Но все таки ты не в курсе почему могут не работать ЧПУ в информационных страницах и статьях?

Link to post
Share on other sites

В них действительно подставляется название страницы или статьи только если включены короткие URL.

Сейчас ещё гляну на твой файл, тогда сравню со своим, может найду различия.

Мельком посмотрел, вроде всё нормально выглядит.

Link to post
Share on other sites

А можно сделать что бы название статьи или страницы подставлялось и не зависело от того включены короткие URL или нет, или переписать условие, что-бы включалось, когда короткие URL выключены?

Link to post
Share on other sites

В файлах:

/templates/шаблон/source/boxes/articles_new.php

/templates/шаблон/source/boxes/content.php

/templates/шаблон/source/boxes/information.php

замени:


if (SEARCH_ENGINE_FRIENDLY_URLS == 'true')

[/code] на:
[code]
if (SEARCH_ENGINE_FRIENDLY_URLS == 'false')

Link to post
Share on other sites

И сново о ЧПУ!

Работники с хостинга протестировали при включенных коротких URL:

При включении  коротких URL в файл .htaccess прописывается определенный набор правил, которые говорят серверу куда обращаться при клике на определенную ссылку, у Вас этот файл пустой, так что проблема в самой CMS.

Я и удалил этот пустой файл в корне, но в итоге как было так и есть. Можно ли прописать это условие?

А вообще этот пустой файл нужен?

Link to post
Share on other sites

В VaM Shop ЧПУ работают не через .htaccess

Так что вряд ли дело в нём.

Файл можешь удалять, ничего не будет страшного.

Link to post
Share on other sites

Смотрел, у меня точно такие же настройки.

А ты попробуй в index.php добавить:


echo $PHP_SELF . 'test';
[/code] перед:
[code]
require (DIR_WS_INCLUDES.'header.php');

Затем зайди на главную страницу магазина, посмотри что у тебя сверху будет написано, просто test или /index.phptest

Link to post
Share on other sites

А когда ты включаешь короткие url и открываешь index.php страницу в браузере, т.е. просто указываешь адрес своего магазина.

Тоже пишет не могу отобразить url?

Link to post
Share on other sites

Тоже пишет:

Error!

Unable to determine the page link!

Перевел переводчиком:

 

Неспособный определять связь страницы!

Link to post
Share on other sites

Попробуй в /includes/application_top.php, внизу, до ?> добавить:


if(!isset($PHP_SELF)) $PHP_SELF=$_SERVER["SCRIPT_NAME"];
[/code]

Link to post
Share on other sites

Тогда я сдаюсь, не знаю, почему могут не работать.

Придётся тогда не включать короткие url.

Link to post
Share on other sites

А что обозначает цыфра 304 в логах в тот момент, когда включаю короткие URL?

Попробую еще раз протестировать сайт с службой поддержки, когда на сайте будет меньше посетителей. Может с толку сбил пустой файл .htacces?

Link to post
Share on other sites

Саша а ты можешь рассказать как у нас работают ЧПУ и каким макаром осуществляется подмена символов при включении коротких URL. Служба хостинга никак не может понять в чем дело, а может не хочет чего то включать на сервере. Мне прислали следующий ответ:

К сожалению, другой метод работы ЧПУ мне неизвестен. Через .htaccess с помощью mod_rewrite можно переназначить, чтобы все ссылки обрабатывались одним файлом, так обычно огранизуются ЧПУ. Если есть еще какой-то способ, буду признателен за его описание, может тогда смогу понять в чем тут может быть проблема.

Link to post
Share on other sites

Да не обижаюсь я на хостера, если-бы обиделся - то поменял-бы его по быстрому. Но нашел более-менее надежный украинский хостинг и стабильность работы его лучше предыдущего хостинга, так-что если ничего не получится буду ждать переиндексации страниц сайта (благо при заходе с поисковика на определенную страницу показывает главную страницу с сораненным поисковиком адресом, потеря посетителей незначительна).

Link to post
Share on other sites

Насколько я понимаю, подмена происходит вот в этом куске кода в файла /includes/application_top.php:


// set the HTTP GET parameters manually if search_engine_friendly_urls is enabled
if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') {
if (strlen(getenv('PATH_INFO')) > 1) {
$GET_array = array ();
$PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);
$vars = explode('/', substr(getenv('PATH_INFO'), 1));
for ($i = 0, $n = sizeof($vars); $i < $n; $i ++) {
if (strpos($vars[$i], '[]')) {
$GET_array[substr($vars[$i], 0, -2)][] = $vars[$i +1];
} else {
$_GET[$vars[$i]] = htmlspecialchars($vars[$i +1]);
}
$i ++;
}

if (sizeof($GET_array) > 0) {
while (list ($key, $value) = each($GET_array)) {
$_GET[$key] = htmlspecialchars($value);
}
}
}
}
[/code]

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...