php - 在 Symfony 中访问 wordpress 博客
问题描述
我在 Symfony Web 文件夹(根目录)中名为“blog”的目录中设置了一个 wordpress 博客。但是我无法从浏览器访问它,并且出现以下错误:
"Forbidden"
"You don't have permission to access /blog/ on this server."
我的网站:www.example.com (/web/ <- symfony)
我的博客:www.example.com/blog/(/web/blog/ <- wordpress 目录)
routing.yml 中没有指向 /blog 的路由。
如何在 web 文件夹中设置我的 wordpress 博客并在浏览器上访问它?
PS:
应用程序.php
use Symfony\Component\HttpFoundation\Request;
require __DIR__.'/../app/autoload.php';
include_once __DIR__.'/../app/bootstrap.php.cache';
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);
//Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
app_dev.php
use Symfony\Component\Debug\Debug;
use Symfony\Component\HttpFoundation\Request;
//umask(0000);
/*if (isset($_SERVER['HTTP_CLIENT_IP'])
|| isset($_SERVER['HTTP_X_FORWARDED_FOR'])
|| !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1'), true) || PHP_SAPI === 'cli-server')
) {
header('HTTP/1.0 403 Forbidden');
exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}*/
require __DIR__.'/../app/autoload.php';
Debug::enable();
$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
网页/.htaccess
DirectoryIndex app.php
#Options FollowSymlinks
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>
网络/博客/.htaccess
<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>
解决方案
从技术上讲,这不依赖于 Symfony。
路由的第一步发生在网络服务器级别(apache、nginx、symfony 的内置测试服务器)。
这些配置为将向应用程序发出的每个请求发送到public/index.php
.
Symfony 从那里获取请求并确定使用哪个控制器来填充它。
如果您现在要告诉应用程序忽略该请求,则需要将其转发到子文件夹,这可能会导致沿线某处出现不良行为。
所以,既然你希望你的子文件夹被忽略,你真的想在请求到达 Symfony 之前设置这个规则。
换句话说-您应该考虑将子文件夹排除public/index.php
在服务器级别之外。
这是一个过去的答案,涵盖了 Apache 使用.htaccess
- Symfony Ignore Directory in web/
推荐阅读
- asp.net-web-api - 作为 Azure 应用服务运行时,UserPrincipal.DisplayName 抛出 COMException“访问被拒绝”,在本地开发笔记本电脑上工作正常
- angular - EventEmitter 不断发出值
- laravel - Dompdf 在 laravel 中使用 post 方法返回乱码数据
- html - 导航栏中的行和容器无法正常工作
- html - 导航栏标题不在中心
- android - Fabric crashlytics csyms 不存在
- python - 具有高级约束的 Scipy 投资组合优化
- r - R 在 filter_at 中的starts_with 错误(`starts_with()` 必须在 *selecting* 函数中使用。)
- wordpress - Wordpress:如何编辑有关电子邮件地址更改的邮件?
- android - 错误“未解决的参考:activity_splash”