301将动态URL重定向到静态URL

时间:2013-12-21 07:08:28

标签: .htaccess url-rewriting dynamic-url

如何将301重定向动态网址转换为静态网址?

在这种情况下

www.example.com/book.php?book=title

www.example.com/book/title

申请动态网址时,它应转换为静态网址。 应转换动态URL,而静态URL应显示在地址栏中。

我收到了这段代码:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^user/([^-]+)/?$ /user.php?id=$1 [NC,L]

有人可以给我一个动态网址静态网址的301重定向。 提前致谢。

1 个答案:

答案 0 :(得分:0)

最简单的方法是在mod_rewrite文件中使用Apache的.htaccess。要在地址栏中获取“静态”(seo / fancy)网址,您需要外部重定向。要让服务器做一些合理的事情,你需要进行内部重写。为了防止无限循环,您需要使用%{THE_REQUEST}技巧。

%External redirect
RewiteCond %{THE_REQUEST} ^(GET|HEAD)\ /book\.php\?book=(.*)\ HTTP
RewriteRule ^ /book/%1? [R,L]

%Internal rewrite
RewriteRule ^book/(.*)$ /book.php?book=$1 [L]

上述规则未经测试(但它们应该有效)。如果他们有效,请将[R,L]更改为[R=301,L]。这将使重定向成为永久性的。这将缓存浏览器中的重定向并减少对服务器的请求数量,并使搜索引擎“记住”正确的URL。您不希望在测试时执行此操作,因为它可能会显示先前的尝试(缓存),而不是实际将请求发送到服务器。