我希望能够使用两个URL访问我的symfony2应用程序,而无需更改服务器配置。我试图通过使用mod_rewrite来实现这一点,在我的情况下,我希望能够在http://example.com/和http://example.com/test/访问我的应用程序
.htaccess文件如下所示:
RewriteEngine On
RewriteRule ^test/(.*)$ $1 [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
我在symfony2手册中添加了第2行,第3行和第4行。响应是来自symfony的404。现在我的问题是:
1)是否可以使用mod_rewrite执行此操作?
2)如果没有,那么最好的解决方案是什么?
答案 0 :(得分:0)
一个选项似乎是创建一个名为“test”的文件夹,并为其提供自己的app_dev.php和.htaccess副本
您可能需要调整最后一行。默认的.htaccess文件不使用%{DOCUMENT_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并且我得到路由未找到异常。
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,它可能不是您正在寻找的,但它会验证匹配是否正常。