首页 文章

Htaccess重写URL错误

提问于
浏览
1

我想在Apache服务器中使用mod_rewrite重写URL .

具体来说,我想将以下表格的网址 - mywebsite.com/web/ger/int/sb/index.html重写为mywebsite.com/gerintsb/

在上面的URL ger的情况下,int,sb被附加在一起以形成较短的URL . 我有很多这样的网址要缩短 .

我在我的服务器“web”文件夹中的.htaccess文件中使用了以下RewriteRule-

RewriteRule ^([a-z]+)([a-z]+)([a-z]+)$    web/$1/$2/$3/index.html    [NC,L]

但我的规则不起作用 . 我收到一个找不到对象的错误 .

有人可以排除故障吗?

1 回答

  • 2

    [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]
    

相关问题