Я просмотрел несколько страниц, ответов и статей, безуспешно пытаясь правильно настроить псевдоним 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>
Меня устраивает.