1

我想重写一个 URL,我不希望现有链接再转到旧页面(地址)。

Options +FollowSymlinks
RewriteEngine on
RewriteRule    ^about-us$    /shop/static_page\.php\?static_page_id=3    [NC,L]

这就是我的 .htaccess 文件目前的样子,它工作正常 - 尽管当我添加正常的重定向规则时,例如:

Redirect 301 /shop/static_page.php?static_page_id=3    http://example.com/about-us

这不起作用 - 就好像这条线不存在一样。请问有什么想法吗?

4

1 回答 1

1

2件事:

  1. 规则的顺序很重要,所以在你的内部重写之前有 301
  2. 不要将mod_alias规则与mod_rewrite

以下代码应该适合您:

Options +FollowSymlinks
RewriteEngine on

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+shop/static_page\.php\?static_page_id=3[\s&] [NC]
RewriteRule ^ /about-us? [R=301,L]

# internal forward from pretty URL to actual one
RewriteRule ^about-us/?$ /shop/static_page\.php?static_page_id=3 [NC,L,QSA]
于 2013-10-28T14:20:32.880 回答