Проблема с путями в ВП 3.1
-
Настроен ВП на мультисайтовость, на основном движке все нормально работает. А на доп. созданных блогах кривые пути к медиафайлам.
/wp-content/blogs.dir/2/files/2010/08 — реально фотка лежит здесь а автоматом ВП при в ставке картинки дает адрес вот сюда /magazine/files/2010/08/. magazine — В пути это название доп. блога.Кстати если в настройках у сайта указывать именно этот базис к урл картинкам он все равно уперто его не ставит. Я думаю это где то в конфиг файлах. Которые я найти не могу.
Собственно вопрос: В каком файле поправить этот путь? Или может есть другие пути решения проблемы.
-
Там переадресация должны быть
ВОт хтаксес:
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>
Переадресация не срабатывает. Я поднял аналогичный блог, там все работает из коробки. То есть проблема в настройке(сети). Что могли сделать не так при установке?
А если просто взять и переставить ВП в ту же базу, он таблицы постов потрет на доп блогах? И даст ли это что то, или настройки в базу занесены?
Вот же…
RewriteRule ^(.*/)?files/(.*) wp-content/blogs.php?file=$2 [L]
Могли настроить неполное выполнение .htaccess в httpd.conf
Могли настроить неполное выполнение .htaccess в httpd.conf
А можно для меня попроще объяснить, как это не полное?
Там что кол-во строчек ограничить можно?
Просто этот блог на шаред хосте(причем на достаточно не дружелюбном) у меня нет доступа, к конфу. Поэтому было бы хорошо если бы вы написали как мне объяснить хостеру че сделать.
Если это то, о чем я думаю, то проблема с этой настройкой:
http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride
Требуется
AllowOverride All
Спасибо за помощь, хостеру отписал, когда он включит отпишусь здесь.
В 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» — testi имя доп. сайта созданного не на поддомене а в директории.
Как ему это объяснить, не знаю.
Именно за это и отвечает
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.
Скорее всего на сервере не выставлено, или в самом двиге. Это имеет значение?
Путь загрузки складывается из нескольких констант и параметров. Посмотреть, как это происходит, можно в функции
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?
Нет необходимости цитировать файлы ядра — они у всех одинаковые 🙂
То есть получается что проблема как раз в том что функция получает нулевое значение?
Не факт, нужно проверить. Поскольку картинки отдаются через 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’у. Решил проблему перестановкой, просто из базы повыдергал нужные записи и вручную залил.
- Тема «Проблема с путями в ВП 3.1» закрыта для новых ответов.