我正在使用以下重写规则
RewriteMap map txt:C:/seo/mapping.txt
RewriteCond %{QUERY_STRING} (?!admin)
RewriteCond ${map:$1|NOT_FOUND} !NOT_FOUND
RewriteRule ^(.*?\.(?:html|gif|jpg|png)) ${map:$1} [NC,L,NS,QSA]
但在某些情况下,网址不包含扩展程序
用户应该能够输入/xyz.html
或/xyz
我需要的是,如果用户没有输入扩展名,那么在重写规则中.html应自动附加。
像
这样的东西RewriteRule ^(.*?\.(?:html|gif|jpg|png)) ${map:$1\.html} [NC,L,NS,QSA]
答案 0 :(得分:1)
我会将这两种情况分开:
RewriteMap map txt:C:/seo/mapping.txt
RewriteCond %{QUERY_STRING} (?!admin)
RewriteCond ${map:$1|NOT_FOUND} !NOT_FOUND
RewriteRule ^(.*?\.(?:html|gif|jpg|png)) ${map:$1} [NC,L,NS,QSA]
RewriteCond %{QUERY_STRING} (?!admin)
RewriteCond ${map:$1.html|NOT_FOUND} !NOT_FOUND
RewriteRule ^([^/.]+)$ ${map:$1.html} [NC,L,NS,QSA]
答案 1 :(得分:0)
我想出了这个,它将捕获文件名,如果有扩展名,它也会捕获它。然后,文件名捕获组附加.html
。但是我没有用多个/
来测试它,但我确信你可以根据需要调整它。
RewriteRule ^\/(\w+)[.]?(\w)? $1.html [NC,L,NS,QSA]