Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mod rewrite 如何使用mod_rewrite将symfony2与两个URL一起使用_Mod Rewrite_Symfony - Fatal编程技术网

Mod rewrite 如何使用mod_rewrite将symfony2与两个URL一起使用

Mod rewrite 如何使用mod_rewrite将symfony2与两个URL一起使用,mod-rewrite,symfony,Mod Rewrite,Symfony,我希望能够使用两个URL访问我的symfony2应用程序,而无需更改服务器配置。我试图通过使用mod_rewrite来实现这一点,在我的例子中,我希望能够在和访问我的应用程序 .htaccess文件如下所示: RewriteEngine On RewriteRule ^test/(.*)$ $1 [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L] 我添加了第2行,第3行和第4行来自sym

我希望能够使用两个URL访问我的symfony2应用程序,而无需更改服务器配置。我试图通过使用mod_rewrite来实现这一点,在我的例子中,我希望能够在和访问我的应用程序

.htaccess文件如下所示:

RewriteEngine On
RewriteRule ^test/(.*)$ $1 [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]   
我添加了第2行,第3行和第4行来自symfony2手册。回复是来自symfony的404。现在我的问题是:

1) 是否可以使用mod_rewrite执行此操作

2) 如果不是,最好的解决方案是什么

一个选项似乎是创建一个名为“test”的文件夹,并为其提供自己的app_dev.php和.htaccess副本

您可能需要调整最后一行。默认的.htaccess文件不使用%{DOCUMENT\u ROOT},但我的安装程序需要它

RewriteEngine On
RewriteOptions Inherit
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/test/app_dev.php [QSA,L]
然后需要编辑test/app_dev.php,在require语句中添加额外的“./”

对我的一个项目的快速测试表明,这似乎是可行的

更新

我不相信仅仅通过重写规则就可以做到这一点。这是我试图修改web/.htaccess文件以使其正常工作的尝试。我的理解是,如果您请求/test/foo,URL将被重写为内部的/app_dev.php/foo。然而,Symfony查找它试图路由的URL的方式总是会发现URL是/test/foo,我得到一个route not found异常

RewriteEngine On
RewriteOptions Inherit

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^test/(.*)$ %{DOCUMENT_ROOT}/app_dev.php/$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/app.php [QSA,L]

如果我将app_dev.php行添加为使用[QSA,L,R=301],它会将浏览器重定向到/app_dev.php/foo,并提供所需的页面。因为它没有隐藏app_dev.php,所以可能不是您想要的,但它会验证匹配是否正常工作。

这似乎无法使用mod_rewrite:有简单的替代方法吗?您找到解决方案了吗?我正在与完全相同的问题斗争,不幸的是,我没有找到一个合适的解决方案。