-1

私はdiscountasp.net(標準の.netウェブホスト)によってホストされているドメインを持っています。それをhttp://example.comと呼んでください。asp.net web.configファイルのサブディレクトリの外観を削除するためのURLルールを書き換えます。

ドメインには既定のWebサイトがホストされていますが、さらに別のWebアプリケーションがいくつかあります。

ウェブサイトはWordpressで作成され、ホスト上のドメインのルートディレクトリの/ wordpressサブディレクトリにあります。

ユーザーがブラウザに表示するURLに/ wordpressが存在しないようにしたいと思います。以前は、ルートディレクトリにhttp://example.com/の要求をhttp://example.com/wordpress/にリダイレクトするindex.htmlファイルがありました。しかし、もちろんリダイレクトだけで、ブラウザのURLバーにhttp://example.com/wordpress/が残っています。

私は、ルートディレクトリのWeb.configファイルでURL書き換えルールを使って私が望むことを達成できると思いました。以下はそのファイルのテキストです。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="wordpress redirect a"> 
       <match url="wordpress/(.*)"/> 
       <action type="Rewrite" url="{R:1}"/> 
      </rule> 
      <rule name="wordpress redirect b"> 
       <match url=".*"/> 
       <conditions> 
        <add input="{REQUEST_URI}" pattern=".*nm.*" matchType="Pattern" negate="true" ignoreCase="false"/> 
        <add input="{REQUEST_URI}" pattern=".*survey.*" matchType="Pattern" negate="true" ignoreCase="false"/> 
       </conditions> 
       <action type="Rewrite" url="wordpress/{R:0}"/> 
      </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

ファイルのロジックは次のとおりです。

  • 最初のルール:URLパス(ホストの後の部分は:ポート/)場合wordpress/で始まり、それが削除されますwordpress/となり、wordpress/の後ろにある部分だけで処理ルールが継続されます。

  • 第2のルール:特別なウェブアプリケーション文字列「nm」または「survey」を含まないURLパスの場合は、パスの先頭にwordpress/を置きます。

これは私がブラウザバーにhttp://example.com/を置けば、それは正しくウェブサイトを示しており、また、この書き換えは、http://example.com/nm/などのWebアプリケーションの呼び出しに干渉しないという意味で、作品...

しかし、それでもユーザーが見るURLに/ wordpressが残っています(つまり、ブラウザバーにhttp://example.com/を置くと、ブラウザバーにはhttp://example.com/wordpress/となります)。私は書き換えルールが何をしているのか誤解しています。しかし、私の理解(そして私がこれらのルールで達成しようとしたこと)は、 wordpress/が含まれていないURL(私の特別なWebアプリケーションのURLを除く)は/wordpressを含むように内部的に処理されますが、/wordpressを含まない元のURLとしてクライアントに返されます。そう、リダイレクトではなく、ちょうど内部の偽善者。ウェブサイト内のリンクには/wordpressが含まれており、/wordpress/wordpressを取得したくないため、追加する前に削除する必要があるため、最初のルールがあります。

しかし明らかに私は何かを誤解しています。

別の手がかりは、私がURL http://example.com/about/を使用したときに2番目のルールがその仕事をしているように見えないということです。 2番目のルールは、これがhttp://example.com/wordpress/about/のように動作するはずですが、代わりに404エラーが見つかりません。しかし、私がhttp://example.com/wordpress/about/をブラウザバーに入れた場合、そのWebページが正しく表示されます。だから私は混乱している。

+0

なぜ説明なしのdownvoteですか? –

答えて

0

少なくとも部分的に、自分の質問に答えるために:

  1. あなたは、WebアプリケーションのURLをめちゃくちゃにするWeb.config URL書き換えルールを心配する必要はありません。 URLがWebアプリケーションへのリードと一致する場合、ASP.netはWeb.config url書き換えルールを「途中で」適用しません(Web.configがルートディレクトリにある場合など)。ただし、WebアプリケーションURLは次のように使用されます。 -is。

  2. Wordpress管理者コントロールパネルには、「一般設定」の下に、Wordpressファイルの物理ディレクトリと、ユーザーに表示されるURLの「仮想」ディレクトリの両方を設定するオプションがあります。自分のリダイレクトでワードプレスを "偽造"しようとするのは難しいので、これらのオプションを使うのが最善です。

関連する問題