2

私の acces_log の URL のいくつかに疑問があります。http://domain.com/url_name.htm% (はい、% 付き) のように、私にリンクしている外部サイトからの URL がいくつかあります。

次に...私のサーバーはhttpエラーを返します。この偽のURLを正しい方法にリダイレクトする必要があり、htaccessで考えました。

URL の最後の文字にある % 記号を検出し、それなしでリダイレクトするだけで済みます。 http://domain.com/url_name.htm% --> http://domain.com/url_name.htm

これどうやってするの?私はいくつかのサンプルを試していましたか?シンボルですが、ラッキーではありませんでした。

ありがとう!

4

2 に答える 2

1

私はすでに間違いを見つけました...

一部の不正な形式のURLがvhostに渡されないようです。その場合、これらの請願は.htaccessを読み取りません。

これを解決する唯一の方法は、httpd.confにErrorDocument400ディレクティブを追加することです...異なるvhostsを持つサーバーには最適なオプションではありません..すべてが同じ動作をするためです...しかし、それはこの場合の唯一の方法。

Apacheドキュメントからの引用:

ほとんどのエラーメッセージは上書きできますが、ErrorDocumentの設定に関係なく、内部メッセージが使用される特定の状況があります。特に、不正なリクエストが検出された場合、通常のリクエスト処理はただちに停止され、内部エラーメッセージが返されます。これは、悪いリクエストによって引き起こされるセキュリティの問題を防ぐために必要です。

とにかくありがとう!!

于 2012-10-25T14:53:19.660 に答える
0

このページは、.htaccess ルールについて非常に役立ちます。 http://www.helicontech.com/isapi_rewrite/doc/RewriteRule.htm

小さなphpスクリプトを使用するこれに対する解決策もいくつか見ました。IEこれは#を置き換えます

.htaccess
RewriteRule old.php redirect.php?          url=http://example.com/new.php|hash      [R=301,QSA,L]

redirect.php
<?php
$new_url = str_replace("|", "#", $_GET['url']);
header("Location: ".$new_url, 301);
die;
?>
于 2012-10-25T14:25:50.070 に答える