Проблемы с постоянными ссылками при установке WordPress в подкаталог / подпапку

6 окт. 2012 г., 11:03:34
Просмотры: 21.1K
Голосов: 4

Я установил WP в подпапку /cms, и он работает без отображения подпапки в URL. Когда я использую /%postname%/ как структуру постоянных ссылок, я получаю ошибку 404 на сайте. Мой сервер поддерживает mod_rewrite.

Мой код

wp-config.php

define('WP_SITEURL', 'http://www.sitename.de/cms');
define('WP_HOME', 'http://www.sitename.de');

корневая директория

1) .htaccess

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

2) index.php

<?php
define('WP_USE_THEMES', true);
require('./cms/wp-blog-header.php');
?>  

/cms

1) .htaccess

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

2) index.php

<?php
define('WP_USE_THEMES', true);
require('./wp-blog-header.php');
?>  

Спасибо за помощь
Ogni

0
Все ответы на вопрос 4
1

Что я обычно делаю

  • Устанавливаю WordPress в поддиректорию.
  • Открываю настройки постоянных ссылок и задаю нужную структуру.
  • Перехожу в Настройки → Общие
  • Удаляю название поддиректории из поля 'Адрес сайта (URL)'
  • Вырезаю файлы index.php и .htaccess из поддиректории и вставляю их в корень
  • Изменяю код в index.php, как вы сделали.
  • Снова захожу в Настройки → Постоянные ссылки и сохраняю форму

Готово. Вам больше не нужны файлы index.php и .htaccess в поддиректории.

4 сент. 2013 г. 22:59:19
Комментарии

Как ни странно, это противоречит тому, что указано в кодексе Выделение_WordPress_в_отдельную_директорию. Там говорится о необходимости сохранять копии обоих файлов: index.php и .htaccess. Может быть, у вас есть подсказка по этому поводу?

Примечание: я не эксперт по .htaccess, и мне до сих пор не совсем понятно, как должны выглядеть эти файлы в каждой папке.

superjos superjos
28 янв. 2014 г. 12:07:38
1

У меня была похожая проблема, и она была не в коде, а в файле httpd.

  1. Откройте файл конфигурации Apache, расположенный по адресу /etc/httpd/conf/httpd.conf (или apache.conf для Ubuntu).
  2. Измените параметр AllowOverride None на AllowOverride All внутри директивы Directory для DocumentRoot, обычно это выглядит так:
5 авг. 2013 г. 11:27:18
Комментарии

Это спасло мой день. Когда стандартные инструкции не работают, значит что-то не так. Думаю, это стоит добавить в руководство codex о переходе на подпапку.

Ehsan88 Ehsan88
21 авг. 2020 г. 07:17:33
1

мое решение этой проблемы, которое всегда работает в моем случае:

создайте файл .htaccess в поддиректории и добавьте код, который генерируется при изменении постоянных ссылок внизу страницы.

пример сгенерированного кода:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /kimco/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /kimco/index.php [L]
</IfModule>
15 окт. 2013 г. 18:34:07
Комментарии

Вы имеете в виду, что оба файла .htaccess (в корне и подкаталоге) должны иметь одинаковое содержимое? Например, оба с RewriteBase /kimco/ ?

superjos superjos
28 янв. 2014 г. 12:11:55
3

Удалите файл .htaccess в папке /cms, затем перейдите в Настройки → Постоянные ссылки, чтобы сбросить правила перезаписи. Также убедитесь, что URL сайта и домашний URL правильно указаны в базе данных (как у вас прописано в wp-config).

6 окт. 2012 г. 17:31:55
Комментарии

если вы определяете URL сайта и домашний URL в wp-config, то что бы ни было в базе данных, оно будет проигнорировано

Milo Milo
6 окт. 2012 г. 18:27:56

@Milo: Это верно
Когда я обновляю постоянные ссылки (в админке WordPress), корневой .htaccess выглядит так: .. RewriteBase / ... RewriteRule . /index.php [L], но я думаю, он должен выглядеть так: ... RewriteBase /cms ... RewriteRule . /cms/index.php [L]

ogni ogni
6 окт. 2012 г. 21:40:35

в корне, я думаю, должно быть RewriteBase /, как это и происходит после обновления постоянных ссылок. Это решило проблему?

commonpike commonpike
8 февр. 2013 г. 19:04:50