Удаление index.php из URL

25 мар. 2017 г., 05:14:20
Просмотры: 4.6K
Голосов: 0

Я установил WordPress в подкаталог /www/html/wordpress/ (а не в /www/html/), и решение, предложенное здесь Как избавиться от index.php, не сработало на этом сервере.

Решение предлагает добавить следующее в .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

и изменить на 'AllowOverride ALL' в конфигурации Apache.

Решение сработало на моем другом сервере, где WordPress установлен в /www/html/, но не на этом. Вы знаете, почему так происходит и как я могу это исправить? (Похоже, мне нужно изменить приведенный выше код в .htaccess, но я не знаю как)

1
Комментарии

Как выглядят ваши URL в настоящее время? Какие у вас настройки постоянных ссылок?

bosco bosco
25 мар. 2017 г. 06:17:47
Все ответы на вопрос 2
1
-2

Войдите в админ-панель WordPress и перейдите в Настройки > Постоянные ссылки. В разделе Общие настройки выберите "Произвольная структура" и в текстовом поле введите /%postname%/

Нажмите "Сохранить изменения"

Второй шаг - создание файла .htaccess, который затем нужно загрузить в корневую директорию сайта WordPress.

Файл .htaccess должен содержать следующие правила:

RewriteEngine on
RewriteBase / 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php/$1 [NC,L]

# для WordPress, установленного в поддиректорию blogs
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule ^wordpress/(.*)$ wordpress/index.php/$1 [NC,L]
25 мар. 2017 г. 05:23:26
Комментарии

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

geek2000 geek2000
26 мар. 2017 г. 00:01:26
0
-2

В зависимости от ваших настроек стандартные записи в .htaccess будут выглядеть именно так, как показано в коде ниже. Если после активации одного из параметров, отличного от "По умолчанию" в разделе WordPress > Настройки > Постоянные ссылки, вы всё ещё не можете избавиться от index.php, это означает, что стандартные записи WordPress не вступили в силу.

Убедитесь, что ваш файл .htaccess загружается при запуске Apache?
Как выглядит конфигурация Apache <virtualhost> для директории, в которой установлен WordPress?

Стандартная запись 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

Если ничего не помогает, попробуйте добавить этот код в ваш файл .htaccess. Это не совсем решение проблемы, но добавление этого кода может вызвать ошибку, которая укажет вам на источник проблемы. Проверьте файлы журналов ошибок.

# Принудительное удаление index.php из запросов
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]*/)*index\.(php)(\?[^\ ]*)?\ HTTP/
RewriteRule ^(([^/]*/)*)index\.(php)$ /$1 [R=301,L] 
5 мар. 2018 г. 16:25:31