WordPress作为Symfony(Symfony3)子目录

时间:2016-10-06 11:55:37

标签: php wordpress .htaccess symfony virtualhost

我在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>

在localhost安装没有VirtualHost 的情况下,这完全可以运行。

但是在实时服务器上,让我们说在21.21.21.21我运行Symfony并且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

我尝试在网上修改一些答案,没有任何变化。

1 个答案:

答案 0 :(得分:5)

更新您的vhost,以便从symphony规则中排除/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