【问题标题】:Case-insensitive htaccess 301 [closed]不区分大小写的htaccess 301 [关闭]
【发布时间】: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
http-status-code-301
【解决方案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/。