スターサーバーでBottleを使ったページを表示させることができました。
今回は動的ルーティングを試しました。
サンプルプログラム
index.py
#!/usr/bin/python3.6 from bottle import route, run, template @route('/') def index(): return template("sample", name="テスト") ※ @route('/<name>') def test(name): return template("sample", name=name) run(server='cgi')
※ ルートディレクトリ/xxxにアクセスするとtest(name)が実行され、引数のnameにはxxxが設定される
sample.html
<html lang="ja"> <head> <title>サンプル</title> </head> <body> {{ name }} </body> </html>
これで/xxxにアクセスすると画面上にxxxが表示されるはずなのですが・・・
404エラーになりました。
index.pyにアクセスできていないようですね。
下記のようにURLを変更すれば表示されるようになりました。
/index.py/xxx
日本語も大丈夫
/index.py/テスト
しかしできるならドキュメントルート+ "/xxx"でちゃんと表示されるようにしたいですね。
.htaccessに下記を追加してURLをリライトするようにします。
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.py$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.py/%{REQUEST_URI} [L] </IfModule>
/xxxにアクセスするとURLの表示内容は変わらないけど裏では /index.py/xxxにアクセスするようになります。
.htaccessを更新して/xxxにアクセスすると
表示されました。
index.pyをコントローラにすれば動的なページの作成も簡単に実装できそうです。