不区分大小写的htaccess 301 [关闭]

Posted

技术标签:

【中文标题】不区分大小写的htaccess 301 [关闭]【英文标题】:Case-insensitive htaccess 301 [closed] 【发布时间】:2013-03-28 22:21:01 【问题描述】:

我有大约 300 个以下格式的重定向

Redirect 301 /post/My-Blog-Post.aspx https://www.example.com/blog/a-new-post/

这很好用,只是重定向区分大小写并且转到 /post/my-blog-post.aspx 不会重定向。

没有旧 URL 到新 URL 的模式,因此这可能必须是每个重定向的标志。

无论如何,我怎样才能获得要重定向的 URL?

【问题讨论】:

为什么这个话题被关闭了? 因为没有任何正则表达式的 .htaccess 主题是离题并且属于:serverfault.com 【参考方案1】:

但是,如果你想让 "My-Blog-Post" 成为 "a-new-post" 的变量,我的意思是如果你想要 /post/My-Blog-Post.aspx 被重定向到 /blog/a-new-post//post/this。 aspx/blog/this//post/that.aspx /blog/that/ 甚至 /post/anything.aspx/blog/anything/,你可以尝试在你.htaccess隐藏文件中使用这段代码:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^post/([a-z0-9-_]+).aspx$ /blog/$1/ [R=301,NC]

【讨论】:

【参考方案2】:

不要认为有办法使Redirect 指令(mod_alias 的一部分)不区分大小写,但是您可以使用一个 mod_rewrite 标志。您需要从这里更改所有重定向:

 Redirect 301 /post/My-Blog-Post.aspx https://www.example.com/blog/a-new-post/

到:

 RewriteRule ^/?post/My-Blog-Post.aspx$ https://www.example.com/blog/a-new-post/ [L,R=301,NC]

注意NC 标志,意思是“没有大小写”。这将匹配任何看起来像 /post/my-blog-post.aspx 并忽略大小写的 URI,并将其重定向到 https://www.example.com/blog/a-new-post/

【讨论】:

没有骰子——结果相同。 添加 NC 标志对我来说适用于几个不同的站点,一个运行 Apache 2.2 的服务器和另一个运行 2.4 的服务器。查看 Apache 的文档,与 Jon Lin 的回答一致:httpd.apache.org/docs/current/rewrite/flags.html#flag_nc

以上是关于不区分大小写的htaccess 301 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使这个 .htaccess 规则不区分大小写?

Htaccess - 将下划线结合到连字符和大写到小写 301 重定向

为啥我的 .htaccess 301 重定向规则不起作用?

htaccess 301 与重定向 404

需要 .htaccess 帮助:不存在的 url 301 重定向到 404,而不是直接给出 404

matlab 的 M 文件的命名区不区分大小写的