.htaccess 将旧的.asp站点重定向到wordpress站点时出现问题

.htaccess 将旧的.asp站点重定向到wordpress站点时出现问题,.htaccess,redirect,mod-rewrite,.htaccess,Redirect,Mod Rewrite,摘要: 我被要求将一个.asp站点迁移到Wordpress,但我在.htaccess重定向方面遇到了一些问题 我正在努力实现的目标: 页码: domain.com/Some-Page-On-My-Site.asp 也重定向 domain.com/some-page-on-my-site/ domain.com/blog/the-greatest-post-title/ 职位: domain.com/articles.asp?title=The-Greatest-Post-Title 也重

摘要: 我被要求将一个.asp站点迁移到Wordpress,但我在.htaccess重定向方面遇到了一些问题

我正在努力实现的目标:

页码:

domain.com/Some-Page-On-My-Site.asp
也重定向

domain.com/some-page-on-my-site/
domain.com/blog/the-greatest-post-title/
职位:

domain.com/articles.asp?title=The-Greatest-Post-Title
也重定向

domain.com/some-page-on-my-site/
domain.com/blog/the-greatest-post-title/

最终目标

  • 使用小写字母与默认Wordpress permalink结构保持一致
  • 仅将.asp URL请求转换为小写,而不是站点的其余部分
我认为,由于*.asp页面重定向,它可能正在吸收articles.asp并将其转换为/articles/。所以我交换了他们在.htaccess文件中的位置

我认为可能需要RewriteCond和Skip标志才能工作。但这可能是错误的

我很高兴能够将页面重定向到工作中,尽管我认为还有一点可以让这些工作做得更好


我尝试过的

这会将旧.asp页面的URL请求转换为新的URL结构:

RewriteRule ^(.*)\.asp$ /$1/? [L,R=301]
这些尝试不会转换旧.asp帖子的URL请求:

# Try 1
RewriteRule ^articles\.asp?title=(.+)$ /blog/$1/ [L,R=301]

# Try 2
RewriteRule ^articles\.asp?title=(.*)$ /blog/$1/ [L,R=301]

# Try 3 - Not that this would probably work but was an attempt
RewriteCond %{QUERY_STRING} (^|&)title\=(.+)($|&)
RewriteRule ^articles\.asp$ /blog/$1/? [L,R=301]

我确认我可以进行1对1重定向,但与上面的页面结构不同,我可以在.asp之前键入任何内容,而它只是删除了.asp

RewriteCond %{QUERY_STRING} (^|&)title\=Duck\-Feet\-Wine($|&)
RewriteRule ^articles\.asp$ /blog/duck\-feet\-wine/? [L,R=301]

有人对此有什么见解吗?还是我认为我能做到这一点就疯了?


我已经读了大约100多页,我被难住了,包括RewriteCond是如何工作的。我很高兴能够将页面重定向到工作状态,现在可以将查询字符串转换为类似静态的链接,以使用Wordpress的小写permalink结构。

我已经阅读了更多的文档和教程,我很困惑。我已经能够尝试一些有效的方法,但它们是1对1链接。域名,com/articles.asp?title=post one.>>链接也>>域,com/blog/post one/但不幸的是,我还没有弄清楚如何通配符查询链接并重定向到新的url结构。这似乎应该很容易,但我确实知道,出于这个原因,有时它也不是最容易使用的。我想让它尽可能动态,这样网站就不会有500行重定向代码。不好玩。RewriteRule仅与请求URL的路径组件匹配-如果需要检查查询字符串内容,则需要在RewriteRule之前使用RewriteCond进行检查。请尝试以下两行,
RewriteCond%{query_string}^title=(.*)$
RewriteRule^articles\.asp$/blog/%1/[L,R=301]
–注意在替换中如何使用
%1
,从条件中返回匹配。(并将其放在重写与
^(.*)\.asp$
匹配的所有内容的更通用规则之前,否则将处理
articles.asp?title=…
)我如何将articles.asp从我编写的通用通用规则中排除?将它们按正确的顺序排列,这应该足够了——你的规则总是从更具体到不那么具体。
L
标志应防止下列规则在文章的规则匹配后应用。