Wordpress permalinks не работает - htaccess выглядит нормально, но при этом возникает ошибка 404 на страницах
Я обновил структуру permalink до /% postname%/, и это обновило мой .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
Но я все еще получаю 404 ошибки на страницах. Есть ли другие настройки, которые мне нужно изменить?
Изменить: если это помогает, то Apache-журнал, кажется, смотрит прямо в постоянную папку. То есть:.
[Wed Oct 16 11:12:32 2013] [error] [client xx.xx.xx.xxx] File does not exist: /var/www/exampledomain/news, referer: http://exampledomain.com/
Ответы
Ответ 1
Для других людей, приземляющихся на этой странице -
Другая проблема может быть (если вы используете Apache в качестве своего веб-сервера), вам нужен файл httpd.conf или файл, доступный для вашего сайта /sitename.conf.
Ваш веб-каталог должен будет разрешить файлу .htaccess переопределять его параметры.
найдите свой веб-каталог в файле - он будет в основной части файла conf или отделен в разделе VirtualHost.
<Directory /path/to/site>
#add the following setting to allow .htaccess in your web dir to work
AllowOverride FileInfo
#other settings ---
</Directory>
Это позволит вам настроить URL-адреса WordPress, но вы хотите, в WordPress.
*** Отредактировано - Спасибо. nietonfir Для обновления. Сначала используйте наименьшее количество привилегий. Если это не сработает, замените AllowOverride FileInfo
на AllowOverride All
Ответ 2
Могут быть несколько факторов, препятствующих работе правила перезаписи. Мой сервер ubuntu нуждался в 3 вещах, чтобы получить постоянную ссылку.
В новых версиях apache2 вам нужно включить модуль:
sudo a2enmod rewrite
sudo service apache2 restart
Вам также может потребоваться изменить файл apache2.conf.
sudo nano /etc/apache2/apache2.conf
Измените правило переопределения веб-каталога на AllowOverride All.
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
После этого перезапустите службу еще раз.
Файл .htaccess в каталоге установки WordPress должен быть доступен или доступен для чтения/модификации веб-сервером.
Это можно сделать, изменив владельца на www-data (обычно пользователь веб-сервера) или изменив разрешения.
sudo chown www-data /var/www/wordpress-install/.htaccess
ИЛИ
sudo chmod 664 /var/www/wordpress-install/.htaccess
Войдите в свой бэкэнд администратора Wordpress и сохраните настройки постоянной ссылки, и они, надеюсь, будут работать.
Ответ 3
Это теперь разрешено. Я не включил mod_rewrite. Поэтому я сделал это:
$ sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
service apache2 restart
$ service apache2 restart
* Restarting web server apache2
Ответ 4
используйте ниже .htaccess код, просто поместите свое имя проекта (которое находится в каталоге www) ниже кода
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project_name/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /project_name/index.php [L]
</IfModule>
# END WordPress
Спасибо
Ответ 5
Вы хотели бы сказать apache, чтобы он выполнил ваш файл.htaccess. Вы можете сделать это, отредактировав файл apache.conf
$sudo nano /etc/apache2/apache.conf
Прокрутите вниз до строки По умолчанию это будет:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
измените значение AllowOverride на All, так что теперь оно становится:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Нажмите ctrl + x и нажмите y, чтобы сохранить файл конфигурации. Чтобы сделать это изменение на сервере, сначала включите mod_rewrite.
$ sudo a2enmod rewrite
Затем перезапустите сервер
$ sudo service apache2 restart
Готово!
Источник: https://www.wst.space/riddling-with-wordpress-permalink-setup-issues/
Ответ 6
Если вы настроили новый или клонированный сайт на ubuntu, не забудьте символизировать файл конфигурации сайта, например. /etc/apache2/sites-available/your-file.conf
в папку /etc/apache2/sites-enabled
, так что apache загружает ее.
Просто запустите: sudo a2ensite your-file.conf
, затем sudo service apache2 reload
.
sudo a2dissite your-file.conf
, чтобы удалить symlink i.e. отключить конфигурацию.
Ответ 7
Я столкнулся с той же проблемой и имел еще одну вещь, которую нужно искать.
Вот что вам нужно для правильной работы wordpress:
-
Убедитесь, что у вас есть соответствующие режимы разрешений для файлов и папок в вашем каталоге wordpress:
sudo find . -type f -exec chmod 644 {} +
sudo find . -type d -exec chmod 755 {} +
-
Для структуры permalink убедитесь, что mode_rewrite
включен в apache:
sudo a2enmod rewrite
sudo service apache2 restart
Ответ 8
Пользователи WAMP (Windows). Некоторые версии WAMP (все версии?) не включают mod_rewrite или разрешают использование SymLinks по умолчанию. Чтобы включить необходимые функции, перейдите к apache/conf/httpd.conf file
, откройте текстовым редактором и раскомментируйте строку LoadModule rewrite_module modules/mod_rewrite
.so(т.е. Удалите знак хеша/фунта в передней части строки). Затем далее в том же файле находится раздел, который начинается с строки " Параметры FollowSymlinks". Измените вторую строку в этом разделе с "AllowOverride none
" на AllowOverride all
. Сохраните отредактированный файл httpd.conf и перезапустите все модули WAMP. Ваши постоянные ссылки теперь должны работать.
Подробнее об устранении проблем Permalink
Ответ 9
Еще одна возможность: я только что обновил свой macOS, который всегда закручивает конфигурационный файл Apache. Помимо прочего, мне также пришлось снова включить модуль mod_rewrite
. Найдите строку, которая говорит:
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
И удалите хэш, чтобы он сказал:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Ответ 10
Еще одна вещь, чтобы проверить, описывает ли это вашу проблему:
- htaccess и mod_rewrite настроены правильно
- 404 на некоторых постоянных ссылках, но не на других
Убедитесь, что в файлах или каталогах нет.php файлов в той же папке, что и ваша Wordpress, с именами, соответствующими постоянной ссылке Wordpress.
Например, если у вас есть следующие страницы в Wordpress:
example.com/name_one/
example.com/name_two/
и каталог, содержащий вашу установку Wordpress, включает следующий файл:
name_one.php
то это будет результат:
Что еще более важно, второй URL-адрес даст 404 вместо запуска name_one.php, что означает, что эта проблема трудно диагностировать, так как она может давать те же симптомы, что и неправильно написанный файл.htaccess.