htaccess - 如何在URI中的尾部斜杠之前删除所有内容

时间:2016-09-01 15:25:19

标签: .htaccess mod-rewrite

我有2个网址模式:

http://www.mondomaine.com/m/99/some-title-etc/

http://www.mondomaine.com/w/287/some-title-etc/

我想在ID号后面的斜杠后隐藏/删除所有内容,我将如何在.htaccess文件中执行此操作,如下所示:

http://www.mondomaine.com/m/99/

http://www.mondomaine.com/w/287/

当然,数字是身份证号码。它们中有很多都是不同的,我只展示了两种模式的例子。

以下是我的.htaccess文件中与/ m / part相关的内容(类似于/ w / part):

    [HttpGet]
    [ActionName("GetStaffsPaged")]
    public IEnumerable<StaffsBasicInfo> GetStaffsPaged()
    {
        var take = string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["take"]) ? 1000 : Convert.ToInt32(HttpContext.Current.Request.QueryString["take"]);
        var skip = string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["skip"]) ? 1000 : Convert.ToInt32(HttpContext.Current.Request.QueryString["skip"]);

        StaffsBasicInfoBL staffsBL = new StaffsBasicInfoBL();

        List<StaffsBasicInfo> staffs = staffsBL.getAllStaffsBasicInfo();

        staffs = staffs.Skip(skip).Take(take).ToList();

        return staffs;
    }

(我在这里看到了很多解决方案,但没有针对我的确切情况)。

1 个答案:

答案 0 :(得分:0)

再次更新:

这适用于任何文件夹结构。

 RewriteEngine On
 #RewriteCond %{REQUEST_FILENAME} !-d -Due to comments no longer needed.
 #RewriteCond %{REQUEST_FILENAME} !-f -Due to comments no longer needed.
 RewriteRule ^(.*)/(.*/+)$  /$1 [NC,L,QSA]

 #RewriteCond %{REQUEST_FILENAME} !-d -Due to comments no longer needed.
 #RewriteCond %{REQUEST_FILENAME} !-f -Due to comments no longer needed.
 RewriteRule ^(.*)/(.*)$  /$1 [NC,L,QSA]

第一行: 打开Rwrite。

第二行: 检查请求的文件不是目录。

第四行:如果URI中有结尾斜杠,则删除最终斜杠后的所有内容,将其删除,然后将页面定向到新链接。

然后检查中断,因为一次只能应用一个重写规则,因此应用第一个规则并重新加载URI。然后会到达第二个:

第五行:这是一个目录吗?否。

第六行:是文件吗?否。

第七行:在最终/之后删除所有内容。完成并访问新的位置。

  • QSA =查询字符串追加。 ?this=aquerystring
  • L =在访问新生成的目标路径之前应用的最后一个,最后一个规则。
  • NC =不区分大小写。