WordPress作为Symfony(Symfony3)子目录

问题描述 投票:1回答:1

我正在DigitalOcean上运行Symfony应用程序。 我已经设置了整个站点并创建了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的 localhost安装上它可以完美运行。

但是在实时服务器上,假设在21.21.21.21运行了Symfony,而21.21.21.21/blog应该打开博客,但没有打开,而是转到了Symfony404。而21.21.21.21/blog/index.php运行了博客(WordPress)。

/ web / blog中的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

我已经尝试过修改网页上的一些答案,但没有任何变化。

php wordpress .htaccess symfony virtualhost
1个回答
5
投票

更新您的虚拟主机,以便从交响乐规则中排除/blog目录。 而且,由于您在/blog中使用.htaccess ,因此您还需要更改为AllowOverride All

<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
© www.soinside.com 2019 - 2024. All rights reserved.