Поддержка Проблемы и решения Проблема с путями в ВП 3.1

  • Настроен ВП на мультисайтовость, на основном движке все нормально работает. А на доп. созданных блогах кривые пути к медиафайлам.
    /wp-content/blogs.dir/2/files/2010/08 — реально фотка лежит здесь а автоматом ВП при в ставке картинки дает адрес вот сюда /magazine/files/2010/08/. magazine — В пути это название доп. блога.

    Кстати если в настройках у сайта указывать именно этот базис к урл картинкам он все равно уперто его не ставит. Я думаю это где то в конфиг файлах. Которые я найти не могу.

    Собственно вопрос: В каком файле поправить этот путь? Или может есть другие пути решения проблемы.

Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Atrax

    (@atrax)

    Ethical engineer

    Там переадресация должны быть

    ВОт хтаксес:

    RewriteEngine On
    RewriteBase /
    
    #uploaded files
    RewriteRule ^(.*/)?files/$ index.php [L]
    RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
    RewriteRule ^(.*/)?files/(.*) wp-content/blogs.php?file=$2 [L]
    
    # add a trailing slash to /wp-admin
    RewriteCond %{REQUEST_URI} ^.*/wp-admin$
    RewriteRule ^(.+)$ $1/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule . - [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]
    
    <IfModule mod_security.c>
    <Files async-upload.php>
    SecFilterEngine Off
    SecFilterScanPOST Off
    </Files>
    </IfModule>

    Переадресация не срабатывает. Я поднял аналогичный блог, там все работает из коробки. То есть проблема в настройке(сети). Что могли сделать не так при установке?

    А если просто взять и переставить ВП в ту же базу, он таблицы постов потрет на доп блогах? И даст ли это что то, или настройки в базу занесены?

    Atrax

    (@atrax)

    Ethical engineer

    Вот же…

    RewriteRule ^(.*/)?files/(.*) wp-content/blogs.php?file=$2 [L]

    Могли настроить неполное выполнение .htaccess в httpd.conf

    Могли настроить неполное выполнение .htaccess в httpd.conf

    А можно для меня попроще объяснить, как это не полное?

    Там что кол-во строчек ограничить можно?

    Просто этот блог на шаред хосте(причем на достаточно не дружелюбном) у меня нет доступа, к конфу. Поэтому было бы хорошо если бы вы написали как мне объяснить хостеру че сделать.

    Atrax

    (@atrax)

    Ethical engineer

    Если это то, о чем я думаю, то проблема с этой настройкой:
    http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride
    Требуется
    AllowOverride All

    Спасибо за помощь, хостеру отписал, когда он включит отпишусь здесь.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    В WP 3.0 вместо wp-content/blogs.php должен быть wp-includes/ms-files.php:

    RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

    Об этом выводится предупреждение при обновлении с предыдущей версии. На чистой установке в режиме Multisite все правила выглядят так:

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    
    # uploaded files
    RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule . index.php [L]
    
    # END WordPress

    Sergey Biryukov — Пробовал заменять строку но результат тот же.

    Как и что устанавливали не знаю. Получил доступ только когда уже все установлено и переставлять нельзя.

    Для того что бы было понятнее вывесил скрин. Путь на который я указал стрелочку не существует то есть ВП почму то решил что картинка там. Хотя она здесь /wp-content/blogs.dir/2/files/2010/08. Как ему это объяснить не знаю.

    Еще заметил что если в предыдущем окне как на скрин нажать на кнопку редактировать, он сразу его начинает видеть но только во время редактирования потом опять путь кривой.

    В этом пути «http://imjadomena.ua/testi/files/2010/09/programmirovanije-pod-linux2.jpg&#187; — testi имя доп. сайта созданного не на поддомене а в директории.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Как ему это объяснить, не знаю.

    Именно за это и отвечает wp-includes/ms-files.php. Других общих рекомендаций у меня пока нет, нужно разбираться с конкретной установкой. Не совсем понятно, откуда путь 2010/09, если на самом деле 2010/08.

    Я так понял он берет основной путь из файла wp-load.php.
    А он в свою очередь из wp-config.php:

    /* Send visitors to non-existent blogs here */
        define( 'NOBLOGREDIRECT', 'imjasaita.ua' );
    
        define('WP_DEBUG', false);
        define('WP_ALLOW_MULTISITE', true);
        define( 'MULTISITE', true );
        define( 'SUBDOMAIN_INSTALL', false );
        $base = '/';
        define( 'DOMAIN_CURRENT_SITE', 'imjasaita.ua' );
        define( 'PATH_CURRENT_SITE', '/' );
        define( 'SITE_ID_CURRENT_SITE', 1 );
        define( 'BLOG_ID_CURRENT_SITE', 1 );
    
        /* Это всё, дальше не редактируем. Успехов! */
    
        /** Абсолютный путь к директории WordPress. */
        if ( !defined('ABSPATH') )
        define('ABSPATH', dirname(__FILE__) . '/');

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

    Не совсем понятно, откуда путь 2010/09, если на самом деле 2010/08.

    Скорее всего на сервере не выставлено, или в самом двиге. Это имеет значение?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Путь загрузки складывается из нескольких констант и параметров. Посмотреть, как это происходит, можно в функции wp_upload_dir() в wp-includes/functions.php. Можно переопределить как отдельные части, так и весь путь, однако для нужно нужно знать правильные значения.

    В описании к функции написано:

    * Checks the ‘upload_path’ option, which should be from the web root folder,
    * and if it isn’t empty it will be used. If it is empty, then the path will be
    * ‘WP_CONTENT_DIR/uploads’. If the ‘UPLOADS’ constant is defined, then it will
    * override the ‘upload_path’ option and ‘WP_CONTENT_DIR/uploads’ path.

    То есть получается что проблема как раз в том что функция получает нулевое значение? И потому путь становиться дефаултовым как у обычного ВП?

    Откуда берется upload_path?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Нет необходимости цитировать файлы ядра — они у всех одинаковые 🙂

    То есть получается что проблема как раз в том что функция получает нулевое значение?

    Не факт, нужно проверить. Поскольку картинки отдаются через PHP, проблема вполне может быть в метке BOM или паре лишних пробелов.

    Откуда берется upload_path?

    Из таблицы wp_options. Этот параметр используется только на главном сайте. Для дочерних вместо него используется константа BLOGUPLOADDIR, которая определяется в ms-default-constants.php.

    Не каждая проблема легко решается удалённо. Видимо, это одна из таких.
    Дальнейшее гадание по скриншоту вряд ли можно считать продуктивным 🙂

    Нет необходимости цитировать файлы ядра — они у всех одинаковые 🙂

    Это я для удобства тех кто мне помогает что бы сами в файлы не лезли. Но если так нельзя не буду.

    Я так понял я туплю 🙂 . Мне ведь надо было не реальный путь прослеживать, а тот который отдается в админку при публикации. Они ведь разные? То есть мне надо найти где этот путь передается в значение которое высвечивается в админке, и поправить.

    В файле который вы указали дается реальное расположение файлов, то есть так оно и есть:

    function ms_upload_constants(  ) {
    	global $wpdb;
    
    	/** @since 3.0.0 */
    	// Base uploads dir relative to ABSPATH
    	if ( !defined( 'UPLOADBLOGSDIR' ) )
    		define( 'UPLOADBLOGSDIR', 'wp-content/blogs.dir' );

    Но в адмнку ведь все равно прописывается другой путь. Подскажите какой файл отвечает за подстановку, урл в админку во время публикации. Тот урл который я на скрине указал стрелочкой.

    В общем если перефразировать проблему то тупит только админка, все остальное работает нормально. Если бы в админке присваивался правильный урл все работало бы без проблем.

    Не каждая проблема легко решается удалённо. Видимо, это одна из таких.
    Дальнейшее гадание по скриншоту вряд ли можно считать продуктивным 🙂

    Да скорее всего. Наверно переставлю и не буду мучатся.

    Кстати хостеру отписал на счет этого:

    Если это то, о чем я думаю, то проблема с этой настройкой:
    http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride
    Требуется
    AllowOverride All

    Они во первых долго сопротивлялись, но потом на время включили, но это не помогло.

    Все всем спасибо, особенно Sergeю Biryukovу и Atrax’у. Решил проблему перестановкой, просто из базы повыдергал нужные записи и вручную залил.

Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Тема «Проблема с путями в ВП 3.1» закрыта для новых ответов.