Назад | Перейти на главную страницу

Ошибка 404 для постоянных ссылок с Apache Alias ​​и Wordpress

Я просмотрел несколько страниц, ответов и статей, безуспешно пытаясь правильно настроить псевдоним Apache и постоянные ссылки Wordpress.

/var/www/
| - example.com (Custom Web App)
| - blog.example.com (Wordpress)

Используя приведенную выше структуру, я могу получить доступ к Wordpress без каких-либо проблем, включая постоянные ссылки, такие как https://blog.example.com/sample-post/.

Я добавил псевдоним в Apache, как показано ниже:

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/example.com/public
    Alias /blog /var/www/blog.example.com

    <Directory /var/www/example.com/public>
            AllowOverride all
            Options -Multiviews
            Require all granted
    </Directory>
</VirtualHost>

После внесения этих изменений перезапустите apache и обновите wordpress address и site address в области настроек WordPress я могу получить доступ к сайту по желаемому URL https://example.com/blog но постоянные ссылки возвращают 404 ошибки.

Я обнаружил, что мне нужно переключиться на простые URL-адреса, чтобы сообщения загружались. Я не вносил изменений в .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>

Цель состоит в том, чтобы получить доступ к сообщениям WP по адресу https://example.com/blog/sample-post/

Любая помощь приветствуется.

Я решил ту же проблему, изменив конфигурацию.

Когда вы используете Alias ​​/ blog, доступ к сообщениям WP с использованием постоянной ссылки example.com/blog/sample-post/ будет перенаправлен на example.com от Apache, поэтому вы получите ошибку 404.

Я использовал обратный прокси, и чтобы игнорировать перенаправления, моя настройка была:

<Location /blog/>
  RewriteEngine off
  ProxyPass !
</Location>

Теперь о псевдониме / блог мы должны изменить следующее RewriteRule на конфигурацию apache, чтобы разрешить постоянные ссылки:

<Location /blog/>
  RewriteEngine off
  ProxyPass !
  <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>
</Location>

Меня устраивает.