我在以下网址中设置了本地网站(Silex应用):http://local.exmaple.com/web/index.php
我需要从网址中删除/web
部分,并且当放置在项目根目录(.htaccess
)中时,以下../web
完成了此目标:
RewriteEngine on
RewriteRule ^(.*)$ /web/$1 [L,QSA]
除了上述本地站点之外,我还需要在实时服务器上设置一个相同的站点,我需要完成从URL中删除/web/
的相同任务。
测试站点位于以下位置: http://www.otherexample.com/mango/test/web/index.php
虽然.htaccess
在本地环境中运行良好,但无法删除/重定向到实时测试站点上的Web目录。
我想知道是否有人知道这是为什么以及如何解决这个问题。
谢谢
答案 0 :(得分:0)
在实时服务器上,只需将您的RewriteRule
更改为mango/test/.htaccess
:
RewriteEngine On
RewriteRule .* web/$0 [L]
这假设您在mango/test/web/
子目录中有一个单独的.htaccess。
答案 1 :(得分:0)
我不知道你的问题是否已经解决。因为我遇到了同样的问题,所以我会给你解决方案。
在我看来,你只需做出这个小小的调整:
RewriteEngine On
RewriteRule ^(.*)$ web/$1 [L]
正如您所说:将其放在项目的根文档中。此外,检查可能有问题的是您的/ web文件夹中的另一个.htaccess。确保这些是重定向到index.php文件的代码行:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
然后,最后但并非最不重要的是,你是如何分配路线的?因为,当你启用调试时,我假设你做了,你可以得到'找不到这条路线'的消息。那可能是因为您分配了错误的路线。并且不要说我错了,因为我遇到了完全相同的问题。在XAMPP上使用项目时,必须将它们分配为“Project / public / #route”,但当我在服务器中时,我不得不像'#route'那样分配它们。
所以,为了解决这个问题,我建议采用以下解决方案:
<?php
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();
$app['debug'] = true;
$routes = $app['controllers_factory'];
现在,分配您的路线,如下例所示:
$routes->match('/', function (Request $request) use ($app) {
return $app['twig']->render('home.twig');
})->bind('home');
使用以下代码行关闭index.php:
$app->mount('#baseURL', $routes);
$app->run();
您应该为#baseURL尝试一些值,在本地服务器上可能会有以下内容:
$app->mount('/', $routes);
在您的网络服务器上试试:
$app->mount('/Project/', $routes);
$app->mount('/Project/web/', $routes);
请告诉我这是否解决了您的问题。如果是,请标记为已完成,否则请对新问题发表评论!
使用这样的东西不是问题:
$routes->get('/', function (Request $request) use ($app) {
return $app['twig']->render('home.twig');
})->bind('home');
你只需要使用$ routes而不是$ app