3

我最近开始使用 Symfony2 PHP 框架,并希望从一开始就包含 html5boilerplate 的所有功能,但是在合并两者的 .htaccess 文件时遇到了一些问题。

前三名来自样板;从 www.example.com 重定向到 example.com,从 example.com/test 重定向到 example.com/test/,并限制对任何以 . 开头的文件夹的访问。(例如,.git)。

最后是 Symfony2 对前端控制器的重写。如果没有其他重定向发生,我希望访问它(因此 example.com/hello/ 应该到达它)。

<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>

<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
  RewriteRule ^(.*)$ /$1/ [R=301,L]
</IfModule>

<IfModule mod_rewrite.c>
  RewriteRule "(^|/)\." - [F]
</IfModule>

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

如果最后一次重写被注释,Apache 返回一个 400 Bad Request,我不太清楚为什么.. 重定向设置为外部(R=301),所以它应该重新评估,并进入 app.php 之一.

重写也已设置为打开。

任何建议都会很棒,没有太多的重写buff =(

4

2 回答 2

2

我尝试了你的配置并且没有问题达到我的 Symfony2 设置。

尝试将您的请求重定向到,app_dev.php而不是app.php这样您就可以跟踪真正的错误。

还是我误解了你的问题?

于 2011-05-31T07:39:42.083 回答
1

我不是 100% 确定问题/问题是什么,但你有没有试过......

<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
  RewriteRule ^(.*)$ /$1/ [R=301,L]

  RewriteRule "(^|/)\." - [F]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
于 2011-05-31T03:00:45.730 回答