0

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

在这种情况下

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

进入

www.example.com/book/title

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

我得到了这个代码:

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

有人可以给我动态 url tio 静态 url 的 301 重定向吗?提前致谢。

4

1 回答 1

0

最简单的方法是mod_rewrite在您的.htaccess文件中使用 Apache。要在地址栏中获取“静态”(seo/fancy)url,您需要一个外部重定向。为了让服务器对它做一些明智的事情,你需要一个内部重写。为了防止无限循环,您需要使用该%{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。不过,您不想在测试时这样做,因为它可能会显示以前的尝试(即缓存),而不是实际将请求发送到服务器。

于 2013-12-21T07:36:15.987 回答