WordPress 作为 Symfony (Symfony3) 子目录

WordPress As A Symfony (Symfony3) Subdirectory

我正在 运行在 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 的本地主机安装上 这 运行 非常完美。

但是在实时服务器上,假设在 21.21.21.21 我有 Symfony 运行ning 和 21.21.21.21/blog 应该打开博客但它没有,而是转到 Symfony 404。而 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

我已经尝试通过网络上的一些答案对此进行修补,但没有任何改变。

更新您的虚拟主机,以便从 symphony 规则中排除您的 /blog 目录。而且您还需要更改为 AllowOverride All,因为您在 /blog.

中使用 .htaccess
<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