我想为以下网址创建路由。
所有内容均以pdf
开头,以.pdf
site.com/en/pdf/aaa/bbb/file.pdf
site.com/pdf/aaa/bbb/file.pdf
site.com/pdf/file.pdf
...
我的代码是:
global_pdf:
class: myRequestRoute
url: /:sf_culture/pdf/*/*.pdf
param: { module: pdf, action: showEmbed }
requirements: { sf_method: get }
但它不起作用。
怎么做?
谢谢。
答案 0 :(得分:1)
您的匹配应该是以冒号开头的变量:
culture_dir_pdf:
url: /:sf_culture/pdf/:dirname/:filename.pdf
param: { module: pdf, action: showEmbed }
requirements: { sf_method: get }
culture_pdf:
url: /:sf_culture/pdf/:filename.pdf
param: { module: pdf, action: showEmbed }
requirements: { sf_method: get }
global_dir_pdf:
url: /pdf/:dirname/:filename.pdf
param: { module: pdf, action: showEmbed }
requirements: { sf_method: get }
# ...
然后,您可以在showEmbed操作中使用这些请求变量。
如果您需要高级匹配逻辑,我会使用Apache Rewrite将PDF请求指向单个URL,然后在routing.yml中添加URL。
答案 1 :(得分:1)
您的路由需要涵盖四种不同的方案:
以下路线应涵盖以上各项。
global_pdf_1:
class: myRequestRoute
url: /pdf/:filename.pdf
param: { module: location, action: test }
requirements: { sf_method: get }
global_pdf_2:
class: myRequestRoute
url: /pdf/:anything/:filename.pdf
param: { module: location, action: test }
requirements: { sf_method: get, anything: .* }
global_pdf_3:
class: myRequestRoute
url: /:sf_culture/pdf/:filename.pdf
param: { module: location, action: test }
requirements: { sf_method: get }
global_pdf_4:
class: myRequestRoute
url: /:sf_culture/pdf/:anything/:filename.pdf
param: { module: location, action: test }
requirements: { sf_method: get, anything: .* }