Я запускаю приложение Symfony на DigitalOcean. Я установил весь сайт и создал VirtualHosts. Мне нужно запустить WordPress в качестве подкаталога (/ blog). Из того, что я знаю, Symfony стремится игнорировать подкаталоги в / web, поэтому я создал / web / blog и установил в нем WordPress.
<VirtualHost *:80> DocumentRoot /var/www/html/site.com/web <Directory /var/www/html/site.com/web> AllowOverride None Order Allow,Deny Allow from All <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L] </IfModule> </Directory> ErrorLog /var/log/apache2/symfony_error.log CustomLog /var/log/apache2/symfony_access.log combined </VirtualHost>
На локальных установках без VirtualHost это работает отлично.
Но на реальном сервере, скажем, в 21.21.21.21 У меня есть Symfony, и 21.21.21.21/blog должен открыть блог, но это не так, вместо этого идет на Symfony 404. В то время как 21.21.21.21/blog/index.php запускает блог (WordPress).
WordPress .htaccess, который живет в / web / blog, выглядит следующим образом:
Options -Indexes DirectoryIndex index.php # BEGIN WordPress <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> # END WordPress
Я пробовал переделывать это с некоторыми ответами в Интернете, ничего не меняется.
Обновите свой vhost, чтобы исключить ваш каталог /blog
из правил симфонии. И вам также нужно будет переключиться на AllowOverride All
поскольку вы используете .htaccess
в /blog
.
<VirtualHost *:80> DocumentRoot /var/www/html/site.com/web <Directory /var/www/html/site.com/web> AllowOverride All Order Allow,Deny Allow from All <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^/blog(/.+)? [NC] RewriteRule ^(.*)$ app.php [QSA,L] </IfModule> </Directory> ErrorLog /var/log/apache2/symfony_error.log CustomLog /var/log/apache2/symfony_access.log combined </VirtualHost>
Обязательно перезапустите apache после изменений.
Изменения в WordPress .htaccess:
Options -Indexes DirectoryIndex index.php # BEGIN WordPress <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> # END WordPress