2011年2月6日
JSPを使ってページを作っても記事のURLが、たとえば「/index.jsp?id=01100」とかでは、何となく味気ないですよね。もちろん、検索など多くのパラメータを必要とするたとえば「/search.jsp?q=700&la=ja&api=10」といったように複数の値を渡す場合は有意義です。
しかし、何らかの一つのパラメータを渡すだけで記事の表示ができるなら「/01100.html」というようなJSPでも[?(クエッション)]を無くして表示がしたいですよね。
でも「そんなのJSPじゃ無理」ということにも。でもJSPでも可能なのです。それを実現するのがApacheの機能の一つ、mod_rewriteを使うのです。
Apacheの設定ファイル「httpd.conf」を開いてください。
その中に「#LoadModule rewrite_module modules/mod_rewrite.so」という設定値があります。この「#」を消しコメントアウトして、設定値を有効にします。
その他、今回はajpと組み合わせて使用するので、下記のようにコメントアウトしてください。
#LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #LoadModule proxy_http_module modules/mod_proxy_http.so ↓コメントアウトします LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_http_module modules/mod_proxy_http.so |
次にサイトのURLの構成です。
http://localhost/test2/location.html とか、http://localhost/test2/sitemap.html
といった「/test2/・・・」といったように「test2」を軸にしたURLにしたいとします。
今度は、Tomcat内の「webapps」内に新しく「test2」というディレクトリ(フォルダ)を作ります。
その「test2」内に次のコードで名前は「uri.jsp」でJSPを作成してください。
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.lang.*" %> String sCode= request.getParameter("a"); </html> |
今度は、またApacheの設定に戻って、次の項目をhttpd.confの一番下に記述してください。
<IfModule mod_rewrite.c> |
それでは、Tomcatの再起動、Apacheの再起動をしてください。
それでは、下記のようなURLでtest2にアクセスしてみてください。
http://localhost/test2/12221.html
そうすると下記のように表示されると思います。
aのパラメータ値:12221.html
まず、「RewriteRule ^/test2/(.*)$ ajp://localhost:8009/test2/uri.jsp?a=$1 [P]」は、RewriteRule ^/test2/(.*)$の設定によって、/test2/以下の文字等をすべて値として、Tomcatの/test2/uri.jspへ、”a”の値として渡してください、という設定です。
そして、uri.jspでは、”a”の値として受け取った文字を変数sCodeで受け取って、それをブラウザ上に表示しています。
これを進化させていくと、”a”で受け取った値をSQLに渡すことによって、一つのJSPページで複数の記事を簡単に表示できるようになります。
その辺りは、また、別の記事でご紹介します。
This site has nothing to do with FBI (Federal Bureau of Investigation).
I support activity of FBI.
If you want to look at a homepage of FBI, trace the following link.
https://www.fbi.gov/
https://www.fbijobs.gov/