Htaccess重写URL错误
问题描述:
我想在Apache服务器中使用mod_rewrite重写URL。Htaccess重写URL错误
具体来说,我想重写以下形式的URL - mywebsite.com/web/ger/int/sb/index.html成mywebsite.com/gerintsb/
在上述URL GER,INT的情况下,sb被附加在一起以形成较短的URL。我有很多这样的URL被缩短。
我曾经在我的“网络”文件夹中的.htaccess文件以下重写规则在我的服务器 -
RewriteRule ^([a-z]+)([a-z]+)([a-z]+)$ web/$1/$2/$3/index.html [NC,L]
但我的原则是不工作。我收到一个对象未找到错误。
有人可以排除故障吗?
答
[a-z]+
是贪婪的。它会消耗整个字符串。后两个捕获组不会捕获任何东西。如果斜线在路径的末尾,则规则不匹配。
你只能这样做,如果你知道路径段的可能值,或者如果路径段有一个固定的宽度:
RewriteRule ^(ger|fr)(int|float)(sb|mp|rt)/?$ web/$1/$2/$3/index.html [L]
或:
RewriteRule ^([a-z]{3})([a-z]{3})([a-z]{2})/?$ web/$1/$2/$3/index.html [L]
你想仅此要重写的URL还是有很多这样的URL? –
我有很多这样的网址。比如web/fr/int/mp,web/ger/int/rt等等。我编辑了我的问题,使它更加清晰:) – Adam