Я не могу заставить WordPress довольно постоянные ссылки работать на сервере Ubuntu с Apache, Django и SSL. Конфигурация работает нормально, если я отключаю SSL, но не с включенным. С включенным SSL каждая постоянная ссылка wordpress (которая не отображается на физический файл) приводит к 404 и записи в журнале ошибок apache, например
File does not exist: /var/www/wpwrap/wordpress/hello-world
Я перепробовал десятки & Предлагаемые в Интернете решения (подавляющее большинство для установок без SSL) — ничего не помогло. Я приправлен определением конфигов Apache (но не WordPress) и являюсь администратором этой машины.
1. Моя настройка apache
<Directory>
или же <VirtualHost>
записиconf.d/*
затем sites-enabled/*
сайты с поддержкой / по умолчанию-000
Готовое содержимое до этого. (Мой отдельный 443 хост, указанный ниже, перенаправляет весь http-трафик на https, поэтому этот файл должен быть спорным). Для устранения этой проблемы я изменил КАЖДЫЙ <Directory>
запись в этом файле, чтобы явно содержать эти 2 строки. Нет эффекта.
Options FollowSymLinks
AllowOverride All
conf.d / my-ssl-site.conf — Моя конфигурация CORE
<Location />
# preexisting, works fine
<IfModule mod_rewrite.c>
RewriteEngine on
# force www prefix for plain example.com;
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [R=permanent,L]
# force ssl
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=permanent]
</IfModule>
</Location>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
DirectoryIndex index.html
ErrorLog "|/usr/sbin/rotatelogs -f -l /var/log/django/error.log.%Y.%m.%d 25M"CustomLog "|/usr/sbin/rotatelogs -f -l /var/log/django/access.log.%Y.%m.%d 25M" combined
#FOR REWRITE DEBUGGING
#RewriteLogLevel 10
#RewriteLog /var/log/django/rewrites.log
# ======= RUN DJANGO/PYTHON THROUGH WSGI MODULE OF APACHE ==============
# pre-existing, works fine
WSGIScriptAlias / /path_to_my/wsgi.py
WSGIDaemonProcess example.com processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup example.com
SSLEngine on
# additional SSL config stuff snipped from here
# ==== WORDPRESS Settings
Alias /blog /var/www/wpwrap/wordpress
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
</IfModule>
<Directory /var/www/wpwrap/wordpress>
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.php
#pretty permalink setup, as defined by wordpress Admin UI
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
</Directory>
#Added these directories during wordpress troubleshooting - no effect
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<Directory /usr/lib/cgi-bin/php5-fcgi>
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
Нет другого <Directory>
конфиги или <VirtualHost>
конфиги или AllowOverride
строки на сайтах включены, conf.d или даже в модах, где угодно в / etc / apache2.
2. Настройка сервера
3. Что работает:
4. Прочие вещи, которые пробовали, кроме предметов, указанных выше:
Не влияет на 404 и ошибка с любым из следующего:
Решил это.
Проблема была в конфликте с <Location>
блок, содержащий другой набор правил перезаписи. Хотя правила не должны были вступать в противоречие (с точки зрения регулярных выражений), правила местоположения каким-то образом блокировали выполнение правил Справочника, поэтому они никогда не выполнялись вообще.
Основано на документах Apache, в которых говорится, что Rewrites официально не поддерживаются в <Location>
блоки, я перенес все <Location>
переписывает в <VirtualHost>
записи для портов 80 & 443 в моем файле conf.d / my-ssl-site.conf. Теперь все работает.
Других решений пока нет …