web-dev-qa-db-ja.com

変数を使用して静的URLに古いURLを書き換えるにはどうすればよいですか?

古いURLを新しいURLにリダイレクトしようとしています。古いサイトはURLの変数を使用していましたが、新しいサイトはSEOフレンドリーURLを使用しています。

古いURLをリダイレクトしようとすると、正しくリダイレ​​クトされず、404エラーが発生します。 SEOの書き換えが他の書き換え条件の失敗の原因かどうかはわかりません。

Options +FollowSymlinks RewriteEngine On

RewriteCond %{HTTP_Host} ^example.com    
RewriteRule (.*) http://www.example.com/$1 [R=301,L] RewriteRule ^(.+).html index.php?seo_title=$1 [nc]    
Redirect 301 /WEBPAGE http://www.example.com/WEBPAGE.html    
RewriteRule ^http://www.example.co.uk/test/test.php?c=viewtest&id=56&sat=9&mainsat=1&start=0$ http://www.example.com/NEW_URL.html
ErrorDocument 404 /PAGE_NOT_FOUND.html

質問:古いURLをリダイレクトするようにRewriteRuleを作成するにはどうすればよいですか?

3
Craig Angus

私が見つけた問題は、URLが予想どおりにファイルと変数の間で分割されることでした。

したがって、?の後のすべてがクエリ文字列として取得されます。

クエリ文字列を確認する条件を追加する必要があります(正規表現を含めることができます)

RewriteCond %{QUERY_STRING} ^viewtest&id=56&sat=9&mainsat=1&start=0$  
RewriteRule ^/test/test.php$ http://www.example.com/WEBPAGE.html? [R=301,L]

また、リダイレクトされたURLの後に?があることに注意してください。これにより、新しいURLに変数が追加されなくなります

2
Craig Angus

可能であれば、特定のページでjavascriptリダイレクトを使用できます。

0