目前,routing.yml
中的所有网址都设置为
fooRoute:
url: /foo/
params: { module:foo, action: index}
目前,用户可以通过转到example.com/foo/
来访问foo / index操作。我想添加一个重写规则,以便example.com/foo
指向同一页面。
我目前的重写规则:
RewriteEngine On
RewriteRule ^(.*)/$ /$1/ [R=301,L]
似乎没有任何效果。
答案 0 :(得分:1)
尝试:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/.+/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
您正在使用的正则表达式^(.*)/$
使用斜杠匹配结束的请求,因此example.com/foo
将与之匹配。
答案 1 :(得分:0)
我更喜欢symfony 1.4中“尾部斜线”的“内部项目”解决方案:
// project_root/lib/routing/MyProjectNamePatternRouting.class.php:
/**
* fixes URL trailing slashes
*/
class MyProjectNamePatternRouting extends sfPatternRouting
{
/**
* @see sfPatternRouting
*/
public function parse($url) {
$url = rtrim($url, '/'); # trim trailing slashes before actual routing
return parent::parse($url);
}
}
// apps/frontend/config/factories.yml:
all:
...
routing:
class: MyProjectNamePatternRouting
param:
generate_shortest_url: true
extra_parameters_as_query_string: true
...