通过 .htaccess 将旧网址重定向到新网址



我想将URL格式从:

https://example.com/modules/news/article.php?storyid=224039

自:

https://example.com/news/224039

任何人都可以帮助编写真正的.htaccess代码吗?

谢谢

未经测试:

RewriteEngine On
RewriteBase /
RewriteRule ^news/([0-9]+) /modules/news/article.php?storyid=$1 [NC,L]

NC 标志用于"无大小写"(如果您希望不区分大小写(。如果没有,请删除此标志。 L 是 Last 标志,这意味着它将是在给定重写实例中解析的最后一个规则,因此不使用进一步的重写。这有点违反直觉,因为 Apache 会在重写后从头开始重新读取所有规则,以确保它不必再次重写,并且对于许多人来说,这是一个关于无限重写循环的问题......可能也可以完全省略L标志,但更具表现力。

在 httpd.conf 文件中启用此功能的 Apache 配置中可以省略 RewriteEngine On。最佳做法是在假设发动机打开之前再次戴上它。重写基础/可能可以省略,这取决于您如何编写 RewriteRule。最后RewriteRule在左侧使用正则表达式,括号存储匹配项,括号定义字符列表,0-9是有效字符,也可以使用d代替,+表示匹配1次或更多次。右边的表达式是用什么替换它。前导斜杠可能可以省略。另请注意,由于右侧存在查询字符串,如果左侧存在查询字符串,它将被丢弃。如果要合并查询字符串,请使用表示查询字符串追加的QSA标志,然后在添加故事 ID 时合并查询字符串。最后,$1表示使用左侧括号捕获的第一场比赛。

最新更新