2016-11-23 16 views
0

私は単純なFlaskアプリケーションを持っています。私はApache設定ファイルを.htaccessを有効にするように変更しました。そして、私が "Deny from all ".htaccessに"禁止された "ページが表示されます。これにより、構文のどこかでエラーが発生するはずです。私は何時間も別のRegExを試してみたが、役に立たなかった。mod書き換えルールは動作しません - apache .htaccess

私は、現在のURLに変換したい:

RewriteEngine On 

RewriteRule ^average_temperatures/([^/.]+)/([^/.]+)/([^/.]+)/?$ average_temperatures?city1=$1&city2=$2&city3=$3 [L] 
:これは私の.htaccessの内容は

http://example.com/average_temperatures/istanbul/ankara/london

次のとおりです。この形式に

http://example.com/average_temperatures?city1=istanbul&city2=ankara&city3=london

誰かがポイントすることができます正しい方向に私はここに何があるかもしれないか?私はどんなヒントも感謝します。どうも。

+0

エラーが発生していないことを確認するには、httpサーバーのエラーログファイルを確認してください。次に、書き換えログを有効にします。これにより、書き換えエンジンの内部で何が起こっているのかを理解できます。 – arkascha

+0

RewriteRule、 "average_temperatures **。ext **?city1 = $ 1&city2 = $ 2&city3 = $ 3"の置換パターンについては、ファイル拡張子(** .php **または** .jsp) **)は、getパラメータ(クエリ文字列値)を渡しているファイルの –

+0

ちょっと、ページはFlaskアプリケーションによって生成されるので、拡張子は単純に ".html"です(ただし、 URL)、それを試しましたが(average_temperatures.html?city1 = $ 1&city2 = $ 2&city3 = $ 3 [L])、まだ動作しません。 –

答えて

0

あなたのhtaccessルールをデバッグするためにこの素敵なサイトを使用してください:http://htaccess.madewithlove.be/ - それに応じてルールが一致します。だから問題は何か他のものです。 (たぶん、あなたは、URL書き換えの目的をmissunderstood?)

あなたのルールは完全にこのルールがリンクに適用されていないことを、覚えておいてください

http://weather-averages.co.uk/average_temperatures/istanbul/ankara/london 

http://weather-averages.co.uk/average_temperatures?city1=istanbul&city2=ankara&city3=london 

への外部からの要求を書き換えあなたはhtml内に配置します。あなたが提供したい、SEO-URLをターゲットに、あなたの<a href="">秒を変更する必要があります:あなたが利用できる以下の$_GET -arrayを持つように

<a href="http://weather-averages.co.uk/average_temperatures/istanbul/ankara/london"> 

が、その後、書き換えられます:

$_GET = array (
    "city1" => "istanbul", 
    "city2" => "ankara", 
    "city3" => "london" 
); 

PS 。:あなたの書き換えルールでは、あなたは拡張機能が不足しています - これはあなたの問題ですか?

average_temperatures?city1=$1&city2=$2&city3=$3 [L] 
average_temperatures.php?city1=$1&city2=$2&city3=$3 [L] 
+0

こんにちはDognose、 RegExで問題を修正するのは簡単だと思っていましたが、ルールが一致し、.htaccessが有効になっているので、問題はこれより深いところにあるのではないかと恐れています。 「外部からの依頼」ということを明確にすることはできますか。申し訳ありませんが、この質問が馬鹿に聞こえる場合は、私はちょうど始めて、それは私の最初の趣味のプロジェクトです。また、/ istanbul/ankaraを?city1 = Istanbul&city2 = Ankara&に書き換えるべきではありません。 これはFlaskアプリで、動的に生成されたコンテンツを持っています。ルールに「.html」を追加しようとしましたが、どちらも機能しませんでした。 –

+0

@scott_mあなたの混乱は、URLの書き換えについてのようです。サーバーはただ一つの言語を理解しています:これは '?city = 1&city = 2'スタイルです。しかし、あなたは訪問者に '/ ankara/istanbul'スタイルを見てほしいと思っています - これは私が"外部 "URLと呼ぶものです。したがって、あなたのhtaccessは訪問者のリクエスト(外部URL)をサーバが理解できるもの( '?'スタイル)に変換する必要があります。だから、この方法で正確に書き直すべきです。 – dognose

+0

@scott_mこれはかなり混乱しています。私は知っています:デフォルトは '?mode = xy'です。だから、URLの書き換えは '?mode = xy'を'/xy'に変更する必要があると思われるかもしれませんが、それはいつも "request-direction"の形で動作します:訪問者は '/ xy'を呼び出します - そう、htaccess '?mode = xy'を出す必要があるので、あなたのサーバはそれを理解することができます。 – dognose

関連する問題