1

我想将 url 从 article.php?id=123 重写为 article/123

我添加了以下规则,它工作正常

  RewriteRule ^article/(.*) /article.php?id=$1 [PT]

我还想添加一个 301 重定向规则,让搜索引擎知道 article.php?id=123 应该移动到 article/123。我添加了以下规则,但似乎不起作用。

  RewriteRule ^article.php?id=(.*)$ /article/$1 [R=301,L]
4

2 回答 2

0

试试这样:

RewriteRule ^article.php?id=(.*)$ /article/$1 [L,R=301]
于 2012-07-24T19:40:47.107 回答
0

您需要匹配实际请求而不是 URI,因为 URI 会被其他规则重写:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /article\.php\?id=([^\ ]+)
RewriteRule ^article\.php$ /article/%1? [R=301,L]

如果与实际请求不匹配,则会发生重定向循环:

  1. 浏览器请求/article.php?id=123
  2. 服务器重定向到/article/123
  3. 浏览器请求/article/123
  4. 服务器内部重写为/article.php?id=123
  5. 服务器内部匹配并将浏览器重定向到/article/123
  6. 浏览器请求/article/123
  7. 从 4 开始重复。
于 2012-07-24T19:49:53.693 回答