删除部分URL并重定向到网站的特定页面

时间:2019-01-25 00:04:08

标签: regex apache .htaccess url-rewriting

我有一个游戏站点,最近迁移到了wordpress,现在我想将旧的URL重定向到新的URL。这是示例:

旧网址-https://www.website.com/fighting/stick-fighter.html 新网址-https://www.website.com/stick-fighter/

我通过在htaccess中创建此代码来解决此问题:

重定向301 /fighting/stick-fighter.html / stick-fighter /

但是我的游戏有500多个类别,所以我不想在htaccess中对每个游戏进行编码。 有没有办法删除URL中“战斗”类别并删除“ .html”扩展名?

1 个答案:

答案 0 :(得分:0)

^(?<base>https?://www.website.com/)(?<catgory>fighting/)(?<page>.+?)(?<extension>\.html)$

然后将“基础”和“页面”组合并在一起

我正在这样使用C#:

string s1 = Regex.Replace(oldUrl, @"^(?<base>https?://www.website.com/)(?<catgory>fighting/)(?<page>.+?)(?<extension>\.html)$", @"$1$3/");

对于URL重定向,您应该通过在httpd.conf中启用“ AllowOverride”来启用apache重定向:

  • 将AllowOverride从“无”更改为“全部”

    Options FollowSymLinks 
    AllowOverride All
    
  • 加载重定向模块

    LoadModule rewrite_module modules/mod_rewrite.so
    
  • 更改/添加重写规则

    <VirtualHost *:80>
        RewriteEngine On
        RewriteRule ^(?<base>https?://www.website.com/)(?<catgory>fighting/)(?<page>.+?)(?<extension>\.html)$ $1$3/ [L]
    </VirtualHost>