Apache Url Rewritingが機能しない
-
06-07-2019 - |
質問
httpd.confファイルにはAllowOverride FileInfo
があります。私のウェブサーバーのトップレベルにある.htaccessファイルには、他のすべてのファイルが含まれています。これは次のとおりです。
RewriteEngine On
RewriteRule ^downloads/?$ index.php?page=downloads [L,NC]
しかし、動作しません。 mywebsite / downloadsおよびmywebsite / downloads /は常に404 not foundを返します。理由は何ですか?ありがとう。 (mywebsite / index.php?page = downloadsは動作します動作します)。
そして、変更するたびにapacheを再起動します。
そして、上記のコードをhttpd.confに配置すると、Webサイトはまったくロードされず、空白になり、サファリホイールが永久に回転します。
RewriteEngine On
を実行するだけで問題ありませんが、他の何か(RewriteBase、RewriteRule)を実行すると、Webブラウザーは何年もかけてロードしようとし、最終的にこのエラーを出します:
Safariは<!>#8217; tページを開きません<!>#8220; http:// mk12。 gotdns.com/ <!>#8221;このページが配置されているサーバーは、n <!>#8217; tが応答しないためです。
誰が何が悪いのか知っていますか?
編集:たとえば、書き換えで禁止されているcssファイルを作成できますが、動作しますが、ダウンロードからindex.php?page = downloadsに移行すると、サーバーが応答しなくなります(上記を参照)。どのページでも問題ありません。ウェブサイトはまったく読み込まれません。任意のアイデア..?
解決 4
うまくいきました!!コードを間違った場所に置いていました。これはhttpd.confにありましたが、最後にありました。 <!> lt; Directory <!> gt;に移動します。そしてその良い。ご協力ありがとうございます!
編集:また、フラグが次のような場合は機能しないことがわかりました:[L, NC]
。 [L,NC]
(スペースなし)でなければなりません。
だから、それが<!> lt; Directory <!> quot; / Library / WebServer / Documents <!> quot; <!> gt;の中になく、フラグ間にスペースがあった2つの問題。これが将来他の誰かを助けることを願っています。
他のヒント
書き換えルールをデバッグする最良の方法は、書き換えログを有効にして、何が問題なのかを確認することです。
<!> quot; download <!> quot;の前にスラッシュを追加するのに疲れましたか?以下のように
RewriteRule ^/downloads/?$ index.php?page=downloads
編集:以下のコードを試してください:
RewriteEngine On
RewriteBase /
RewriteRule ^downloads/?$ /index.php?page=downloads
ダウンロード後に末尾のスラッシュと疑問符を削除し、index.phpの前に先頭のスラッシュを削除します。
RewriteEngine On
RewriteBase /
RewriteRule ^downloads$ index.php?page=downloads.