在htaccess RewriteRule中使扩展名可选

时间:2012-07-25 19:57:46

标签: regex .htaccess mod-rewrite optional

我在.htaccess中有以下代码: -

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^([^/]+)/([^/]+)(.pdf)$ showpdf.pdf?product_code=$1 [NC,QSA,L]

以格式(例如)接收请求: -

/ab-cde-123/anything-can-go-here.pdf

并将其重写为: -

/showpdf.pdf?product_code=ab-cde-123

这很好用。但是,我想稍微改变一下,以便请求中最后一个/之后的所有内容都是可选的,例如这样所有这三个都可以作为请求: -

/ab-cde-123/anything-can-go-here.pdf
/ab-cde-123/anything-can-go-here
/ab-cde-123/

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

你可以删除它的匹配,除了你需要添加一个条件以防止它循环:

RewriteCond %{REQUEST_URI} !^/showpdf\.pdf
RewriteRule ^([^/]+)/? showpdf.pdf?product_code=$1 [NC,QSA,L]