Symfony .htaccess重定向子域以使用params进行路由

时间:2016-06-02 14:59:03

标签: apache .htaccess symfony mod-rewrite

我有一个子域xxx.yyy.fr配置了apache2到文件夹/var/www/my_symfony_project/web/

默认情况下,symfony将所有其他查询重定向到/app.php(使用/ web目录中的.htaccess):

# Rewrite all other queries to the front controller.
RewriteRule ^ %{ENV:BASE}/app.php [L]

因此,xxx.yyy.fr被重定向到xxx.yyy.fr/app.php/

我有一条路线:xxx.yyy.fr/app.php/my_route/{optional_param},带有控制器和视图。

我的问题是:当我转到xxx.yyy.fr/{optional_param}时,如何重写此网址,就像我转到完整的网址xxx.yyy.fr/app.php/my_route/{optional_param}一样?

谢谢!

1 个答案:

答案 0 :(得分:0)

你只有一条路线吗?

否则它将始终重定向到您设置的路线。

我认为你需要这样的东西。还有一件事。如果将所有内容重定向到单个URL,则images /,js /,css / files将无法正常工作。他们也会重定向。

你可以尝试这样的事情。这就是我目前使用的。

DirectoryIndex app.php

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On

# Explicitly disable rewriting for front controllers
RewriteRule ^/web/app.php/your_route - [L]

# Fix the bundles folder
RewriteRule ^css/(.*)$ /web/css/$1  [QSA,L]
RewriteRule ^js/(.*)$ /web/js/$1  [QSA,L]
RewriteRule ^bundles/(.*)$ /web/bundles/$1  [QSA,L]
RewriteRule ^fonts/(.*)$ /web/fonts/$1  [QSA,L]
RewriteRule ^images/(.*)$ /web/images/$1  [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
RewriteRule ^(.*)$ /web/app.php/your_route [QSA,L]
# RewriteRule ^(.*)$ /web/app_dev.php [QSA,L]
</IfModule>

您不需要/ web部分,因为您已经重定向到/ var / www / my_symfony_project / web /

希望这有帮助