我一直在负责清理30,000所以从旧网站的重新设计和开发的结果,留下的网址错误。301重定向在.htaccess 30,000错误
我通常使用的.htaccess要做到这一点,但我怀疑这将是明智的,有30000 301重定向的.htaccess文件里面!
有一些你使用什么样的方法来解决这个问题呢?
在此先感谢。
我一直在负责清理30,000所以从旧网站的重新设计和开发的结果,留下的网址错误。301重定向在.htaccess 30,000错误
我通常使用的.htaccess要做到这一点,但我怀疑这将是明智的,有30000 301重定向的.htaccess文件里面!
有一些你使用什么样的方法来解决这个问题呢?
在此先感谢。
感谢您的帮助球员。我已经从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
我已经添加了很多重定向的网址,并且效果非常好,它不会像服务器那样对服务器产生巨大影响添加到 。htaccess
创建一个PHP页面作为404处理器进行操作。它应该检查传入的URL,检查它是否应该从旧页面映射到新页面,然后发出301.如果没有映射,则呈现404。 .htaccess,你去了。 IIRC这是在IIS7引入URL重写而不需要第三方DLL之前,Wordpress用于处理IIS上的“干净”URL的方式。
我做了一个重定向类,它是404页,将检查数据库中是否有一个有效的页面,301重定向到,而是其重定向到给予404页上。如果它无法解决这个问题,它会在数据库中将其标记为404页面,因此稍后可以修复它。
在这里,你可以与Apache httpd的
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指令配置,因为你也可以写列表为不同的格式,例如像一个数据库表。
请注意这一点:我添加了escape
和lowercase
,这是因为我需要编写的url需要重音符号。如果您的网址没有重音符号,则可以将两者都删除。
如果你想在PHP中实现这些重定向,这里的代码,你需要:
<?php
$dest_url = "http://example.com/path...";
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$dest_url);
我想知道答案呢!特别是当你使用smarty模板 – shnisaka
你可以使用正则表达式表达这个...只是像这个问题:http://stackoverflow.com/questions/3077705/htaccess-regex-rewrite-rule – sleepsort
我发现了一些模式和不同的场景,然后使用正则表达式来覆盖它们。你可以发表一些例子吗? –