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
我正在 运行在 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