Intereting Posts
WordPress извлекает страницу архива вместо моего настраиваемого шаблона Параметры заказа и заказа Не дублируйте сообщения с несколькими категориями в нескольких циклах Ограничение пользователей для просмотра только пользовательских таксономий, которые они ввели? WordPress SQL-запрос – возвращает 'true' 'false' или 'null' Как фильтровать категории по настраиваемому полю? index.php Не показывать пользовательские сообщения / термины Крюк запускается дважды на одной странице продукта Woocommerce Многоязычный WordPress Почему мой пользовательский Javascript не отображается в моем настраиваемом шаблоне? Избранный модуль изображения случайно исчезает сделать другой шаблон на последних шести опубликованных публикациях имена файлов get_template_part и шаблонов Как разрешить кому-либо редактировать сообщение, но не панель доступа Как получить результаты из базы данных

WordPress в определенных подкаталогах, неявно не root

Теперь у меня есть существующее приложение, запущенное на моем корневом сайте. Используя .htaccess, возможно ли, чтобы одна установка WordPress управляла подкаталогами? Например, / press /, / careers /, / blog / будет обслуживаться WordPress. Проблема в том, что я не хочу, чтобы WordPress подавался в корне. Я подозреваю что-то хитрое с permalinks и .htaccess.

Вариант 2 для нас здесь заключается в создании CRUD в нашем приложении, но мы действительно хотели использовать WordPress (для определенных страниц).

Solutions Collecting From Web of "WordPress в определенных подкаталогах, неявно не root"

Попробуй это:

Переименуйте index.php (внутри корневой папки WordPress) в index_.php или wordpress_index.php или что угодно. Таким образом вы можете загрузить текущее приложение, а не индекс WordPress. После этого откройте .htaccess в редакторе и измените его примерно так:

# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress 

к этому:

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wordpress_index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress_index.php [L] </IfModule> # END WordPress 

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

Примечание. Решение user35541 является хорошим, но каждый раз, когда вы хотите добавить другую страницу, вам придется еще раз добавить ее вручную в .htaccess. Плюс, если утверждение user35541 о том, что редактирование файлов ядра плохое, было правильным, плагинов для WP не было (это косвенно косвенно редактирует основные файлы). Единственная проблема при редактировании основных файлов напрямую заключается в том, что они будут перезаписаны при обновлении, но поскольку вы переименовываете файл (или создаете новый, если хотите), это не будет затронуто.

Изменить (даже переименовать) Основные файлы WP никогда не являются хорошей практикой.

Попробуйте это вместо этого:

Установите WordPress в фитическую подпапку в корне вашего сайта (например, / WP).

После этого в файле .htaccess в корневой папке вашего сайта вставьте что-то вроде этого:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule blog/(.*) WP/press/$1 [L] RewriteRule press/(.*) WP/press/$1 [L] RewriteRule careers/(.*) WP/careers/$1 [L] RewriteRule anything_here/(.*) WP/anything_here/$1 [L] </IfModule> 

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

Не забудьте включить симпатичные постоянные ссылки в wordpress .

Таким образом, только ваше текущее приложение находится в корневой папке, а everithing хорошо организован и поддерживается.

Обновление. В этом решении добавление новой страницы WP означает добавление нового правила .htaccess. Обходной путь заключается в использовании общей родительской страницы: создать страницу с именем «Страницы» (slug «pages»), а затем создать любую другую страницу в качестве дочернего элемента этой страницы.

В .htaccess добавьте:

 RewriteRule pages/(.*) WP/pages/$1 [L] 

теперь каждая страница, которая является дочерней (даже внуком) из «Страницы», будет правильно подана.

Вы можете использовать mod_alias для Apache для этого. Прежде чем двигаться дальше, убедитесь, что на вашем сервере установлено это. Самый простой способ – открыть конфигурацию apache и выполнить поиск «псевдонима». У вас должна быть такая строка, без комментариев:

 LoadModule alias_module libexec/apache2/mod_alias.so 

Далее, в вашей конфигурации apache (или конфигурации виртуального хоста для рассматриваемого сайта) добавьте следующий блок, заменив «/ var / www / wordpress» на путь установки WordPress:

 aliasMatch ^(/wp-.*) /var/www/wordpress$1 aliasMatch ^/(blog|careers|press).* /var/www/wordpress/index.php <Directory /var/www/wordpress> Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> 

Перезапустите apache, и, как волшебство, он должен просто работать!