可能重复:
.htaccess rewrite to redirect root URL to subdirectory
我需要更改网站中的所有链接(2455)。
当访问者来自Google(使用旧链接)时会出现问题,因为该页面将为404 page not found
我想将旧链接重定向到新版本的页面。例如:
旧链接:
http://example.com/hotel/13234
http://example.com/hotel/132
http://example.com/hotel/323
http://example.com/page/about_us
http://example.com/page/contact
新链接:(在域名后添加“博客”)
http://example.com/blog/hotel/13234
http://example.com/blog/hotel/132
http://example.com/blog/page/about_us
http://example.com/blog/hotel/323
...
...
...
这样做的最佳方式是什么?
答案 0 :(得分:5)
答案 1 :(得分:2)
您可以使用
将它们重定向到新的Location
header('Location: /blog' . $_SERVER['PHP_SELF']);
如果您使用PHP版本> = 5.4.0,您还可以使用
发送正确的HTTP状态代码301(永久移动)http_response_code(301);
如果您想使用.htaccess
,可以使用RewriteCond
和RewriteRule
进行重定向。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule .* /blog$0 [L,R=301]
RewriteCond
指令阻止重写已经以/blog
开头的网址。否则你将获得无休止的递归。
RewriteRule
指令使用/blog
作为所有网址的前缀,不再应用其他规则L
,并发送HTTP状态代码301 R=301
。
为了实现这一点,必须在.htaccess
中允许这些指令。您可以在主conf文件或虚拟主机上下文中使用相同的指令。