ただ、GAE/J など .htaccess が使えない場合はどうするかというと、Servlet に 301 リダイレクトを実装すればいいわけです。
以下の例は元々の URL が
http://www.getore.info/blog/?[ページ番号を指定するクエリ]
だったのが
http://blog.getore.info/[自動生成のリンク]
に変更になった場合です。
public class RedirectServlet extends HttpServlet {
public void service(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
// 変換規則が無い場合は一つ一つマッピングするしかない
Map<String, String> map = new HashMap<String, String>();
map.put("p=404", "2011/06/radiko_714.html");
map.put("p=19", "2009/10/umssort_12.html");
String query = "";
if (req.getQueryString() != null) {
query = req.getQueryString();
}
String file = "";
if (map.containsKey(query)) {
file = map.get(query);
}
// 該当するページが無い場合はトップページに飛ぶ
String url = "http://blog.getore.info/" + file;
resp.setStatus(301);
resp.setHeader("Location", url);
resp.setHeader("Connection", "close");
}
}
何かの変換規則がある場合は、Map を使うのではなく、正規表現などで対応した方が手っ取り早いと思います。
そして、web.xml に上のサーブレットを追加します。
<servlet>
<servlet-name>Redirect</servlet-name>
<servlet-class>info.getore.RedirectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Redirect</servlet-name>
<url-pattern>/blog/</url-pattern>
</servlet-mapping>