.htaccessでのURL表記の変更(pythonのflaskを使ったアプリにおいて)
pythonのflaskを使ったアプリをレンタルサーバにデプロイしたのですが、URLの表示のされ方を変更できません。内容ご確認の上、お助け頂けますと幸いです。
<解決したい問題>
flaskのプログラム上でredirectされた時にURlの表記に「index.cgi」が入ってしまいます。例えば、アプリ上の"メニュー"ボタンを押し、メニュー画面に遷移すると、URLが「https://ドメイン/MyApp/index.cgi/menu」のような表記になってしまいます。
これを「https://ドメイン/MyApp/menu」と表記されるようにしたいです。
<環境>
・サーバ: レンタルサーバ
・言語・フレームワーク: python/flask
<.htaccessの表記>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /MyApp/index.cgi/$1 [L]
flaskの公式チュートリアルを参照しています。
<ファイル構造>
*レンタルサーバで既定のファイル設置場所に以下ディレクトリを置いています。
*重要だと思う部分のみ抽出しています。
*一部名称は変更しています。
# MyApp/myapp/__init__.py
from flask import Flask
def create_app(test_config=None):
# config関連のコード
from . import db
db.init_app(app)
from . import auth
app.register_blueprint(auth.bp)
# その他のblueprintの登録コード
return app
app = create_app()
# MyApp/myapp/auth.py
import #関連パッケージ群
bp = Blueprint('auth', __name__, )
@bp.route('/')
def index():
return redirect(url_for('auth.home'))
@bp.route('/home', methods=['GET'])
def home():
# レスポンスデータの生成
return response
#その他のルートディレクトリ
htmlでのボタンは以下のように設定しています。
必要な情報だと考えられる該当部分のみ記載しています。
#MyApp/myapp/template/manu.html
<li><a href="{{ url_for('application.menu') }}">メニュー</a></li>
- 備考
- プログラム上では、特にURLの接頭辞は設定していません。
- ボタンを押下することによるページの遷移は"url_for"関数を使用しています。
- ブラウザに手入力で"index.cgi"を除いたURLを入力した場合でもページは表示され、URLも"index.cgi"の表記がないままになります。
その他に必要な情報がありましたら、ご質問ください。
どうぞよろしくお願いします。