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 に答える