.htaccess 301重定向与重写

.htaccess 301重定向与重写,.htaccess,redirect,rewrite,.htaccess,Redirect,Rewrite,我有一个由其他人托管的网站,所有的网页都是.html文件。我现在主持该网站,并已将其更改为wordpress网站。域没有改变,但显然所有的页面都改变了。将所有.html页面重定向到主url的最佳方式是什么?中的301重定向。htaccess不需要mod_rewrite库。这是一种更简单的重定向方法,但它没有使用重写规则所获得的灵活性和能力。如果您有带有显式URL的1-1映射,则可以使用重定向: Redirect 301 /path/file.html http://new.site.com/n

我有一个由其他人托管的网站,所有的网页都是.html文件。我现在主持该网站,并已将其更改为wordpress网站。域没有改变,但显然所有的页面都改变了。将所有.html页面重定向到主url的最佳方式是什么?

中的301重定向
。htaccess不需要mod_rewrite库。这是一种更简单的重定向方法,但它没有使用重写规则所获得的灵活性和能力。如果您有带有显式URL的1-1映射,则可以使用重定向:

Redirect 301  /path/file.html http://new.site.com/newpath.php
如果您试图使用正则表达式对许多类似模式进行通配符匹配,则需要使用“重写”

RewriteRule ^(.*).html$ http://new.site.com/$1.php [R=301,NC,L]

这是对这两种方法的一个很好的概述:

还有RedirectMatch,它还使用正则表达式对类似模式进行通配符匹配。选择取决于你需要做什么

重写是一个复杂的学习过程,但您可以在不提供HTML代码和看似不可能的东西的情况下提供替代URL。但伴随着强大的力量而来的是复杂性和大量的bug

如果你只是做一个简单的重定向-可能匹配一些URL-重定向是一个不错的选择


当你无法使用重定向时,你可能会想开始学习Mod_Rewrite。

如果我想重定向WWW和非WWW版本,该怎么办?我可以在没有RewriteRule或mod_rewrite library的情况下执行此操作吗?@Boris_yo no,如果您试图捕获协议http vs.http,则需要重写条件。这不是真正的协议,而是WWW和non-WWW@Boris_yo您也无法使用重定向捕获域名/主机名,只能使用重写条件的重写规则:
RewriteCond%{HTTP\u host}^foo.com[nc]
重写规则^(.*)$http://www.foo.com/$1[r=301,nc]