0

IIS を使用するサイトで作業しています。拡張機能を削除する作業を行っていますが、末尾のスラッシュの後にクライアントがすべて削除されたことが通知されました。

最初はこれは URL Rewrite では不可能かもしれないと思っていましたが、IIS についてはよくわかりません。

基本的に、誰かがサイトを閲覧して内部ページをクリックした場合、URL はトップ レベル ドメインのままである必要があります。

http://www.example.comそれ以外のhttp://www.example.com/whatever

これは、拡張機能を削除するためにこれまでに持っているものです。

<rule name="Remove PHP Extension">
    <match url="(.*)\.php" />
    <action type="Rewrite" url="{R:1}" />
</rule>
<rule name="Remove PHP Extension">
    <match url=".*" negate="false" />
        <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
        </conditions>
    <action type="Rewrite" url="{R:0}.php" />
</rule>

どんな助けでも大歓迎です

ありがとう

4

1 に答える 1

0

IIS 経由で行うのは難しい場合があります。最初のインスタンスで、各リンクが実際にユーザーをページにナビゲートする必要があるからです。そして、ホームページにリダイレクトしてから、リファラーに基づいて書き換えを実行しない限り、行き詰まります。

代わりに、javascript/jquery アプローチを使用することができます。何かのようなもの:

$('a').on('click', function(ev){
    ev.preventDefault();

    $('body').load($(this).attr('href'));
})

これは任意のアンカーを取り、それをオーバーライドして、コンテンツが現在のページに読み込まれるようにします。

確かに、これにはページ ID などを指すための条件付きチェックがなくhref、サイトに既に ajax 呼び出しがある可能性があることを考慮すると不十分です。

フォームの提出も考慮されていませんが、これを使用することはできます。

これに関するもう 1 つの問題は、誰かがページに直接移動した場合にどうなるかということです。

最後のアプローチは、サイト全体を iframe にロードすることです。厄介ですが、それがクライアントが望んでいる効果である場合は適切です。各ページに、iframe に強制的に挿入されていない場合は、JavaScript を配置することができます。

どのアプローチを採用しても、クライアントは検索ランキングに別れを告げることができます。そういえば、robots.txt ですべてを禁止することを忘れないでください。

于 2013-08-08T18:33:11.130 に答える