Php 301在.htaccess中重定向30000个错误

Php 301在.htaccess中重定向30000个错误,php,apache,.htaccess,Php,Apache,.htaccess,我的任务是清理一个旧网站在重新设计和开发后留下的大约30000个url错误 我通常使用.htaccess来执行此操作,但我怀疑在.htaccess文件中包含30000个301重定向是否明智 你们有些人用什么方法来解决这个问题 提前感谢。创建一个PHP页面,作为404处理程序运行。它应该检查传入的URL,检查它是否应该从旧页面映射到新页面,然后发出301。如果没有映射,则显示404 只需将此页面设置为.htaccess中的404处理程序,就可以了。IIRC这是Wordpress在IIS7引入URL

我的任务是清理一个旧网站在重新设计和开发后留下的大约30000个url错误

我通常使用.htaccess来执行此操作,但我怀疑在.htaccess文件中包含30000个301重定向是否明智

你们有些人用什么方法来解决这个问题


提前感谢。

创建一个PHP页面,作为404处理程序运行。它应该检查传入的URL,检查它是否应该从旧页面映射到新页面,然后发出301。如果没有映射,则显示404


只需将此页面设置为.htaccess中的404处理程序,就可以了。IIRC这是Wordpress在IIS7引入URL重写而不需要第三方dll之前处理IIS上“干净”URL的方式。

我在404页面上创建了一个重定向类,该类将检查数据库是否存在要301重定向的有效页面,并将其重定向,而不是提供404页面。如果它不能理解这一点,它会在数据库中将其标记为404页面,以便以后可以对其进行修复。

在这里,您可以使用ApacheHTTPD进行修复

RewriteMap escape int:escape
RewriteMap lowercase int:tolower
RewriteMap my_redir_map txt:map_rewrite.txt
RewriteCond  ${my_redir_map:${lowercase:${escape:%{HTTP_HOST}%{REQUEST_URI}}}}  ^(.+)$
RewriteRule .*  http://%1 [R=301,L]
我通常直接在apache httpd配置中使用这种重写规则。
在map_rewrite.txt文件中,有一个以制表符分隔的文件,其中包含以下格式的重定向列表:

www.example.it/tag/nozze                www.example.it/categoria/matrimonio
www.example.it/tag/pippo                www.example.it/pluto
www.example.it/tag/ancora               www.google.com
如果你能推广这种方法,那就容易多了,因为重定向有一个共同的模式。但是如果没有,在这种情况下,您只需要将重定向的url添加到列表中。 注意研究RewriteMap配置,因为您也可以将列表写入不同的格式,例如数据库表

请注意:我添加了
转义
小写
,只是因为我需要在URL中添加重音符号。如果您的URL没有重音符号,您可以同时删除它们

如果您想在php中实现这些重定向,下面是您需要的代码:

 <?php
 $dest_url = "http://example.com/path...";
 header("HTTP/1.1 301 Moved Permanently");
 header("Location: ".$dest_url);

谢谢大家的帮助。我已经从freedev执行了建议的操作过程,但是在Apache中创建了一个单独的配置文件

在httpd.conf文件中,我添加了:

# Map settings
Include "conf/extra/map.conf"
map.conf文件:

RewriteEngine On
    RewriteEngine on
    RewriteMap url_rewrite_map txt:conf/map.map
    RewriteCond ${url_rewrite_map:$1|NOT_FOUND} !NOT_FOUND
    RewriteRule ^(.*) http://website.com/${url_rewrite_map:$1} [R=301]
map.map文件的格式为:

/oldname/   /newname

我已经为重定向添加了不少URL,到目前为止还不错,它对服务器的影响不像添加到时那样大。htaccess

我也想知道答案!特别是当您使用smarty Template时,您可以使用正则表达式来实现此。。。就像这个问题一样:我找到了一些模式和不同的场景,然后使用正则表达式来涵盖它们。你能举一些例子吗?也许有一种方法可以重定向整个文件夹…一个旁白;有那么多错误,