-1

我有一個由discountasp.net(一個標準的.net Web主機)託管的域。稱它爲http://example.com重寫url規則以刪除asp.net web.config文件中子目錄的外觀

該域名託管一個默認網站,再加上有幾個獨立的網絡應用程序。

該網站是在Wordpress中創建的,它位於主機上域根目錄的/ wordpress子目錄中。

我想讓它在用戶在瀏覽器中看到的URL中沒有/ wordpress。以前,根目錄中有一個index.html文件,用於將http://example.com/的請求重定向到http://example.com/wordpress/。但這當然只是一個重定向,並在瀏覽器URL欄中留下http://example.com/wordpress/

我以爲我可以用我的Web.config文件中的URL根目錄中的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/之後出現的部分。

  • 第二條規則:對於任何不包含特殊Web應用程序字符串「nm」或「survey」的url路徑,請在路徑前面放置wordpress/

這工作,在這個意義上,如果我把http://example.com/到瀏覽器吧,它正確顯示的網站,同時該重寫不與Web應用程序調用,如http://example.com/nm/干擾......

但是,它仍然保留了用戶看到的URL中的/ wordpress(即,當我在瀏覽器欄中放置http://example.com/時,在瀏覽器欄中執行了任何重寫/重定向後,最終將返回http://example.com/wordpress/可能是這樣我只是誤解了重寫規則的作用,但我的理解(以及我試圖用這些規則實現的)是,任何公司不包括wordpress/的原始URL(除我的特殊Web應用程序URL)將在內部處理,就好像它包含/wordpress一樣,但隨後以原始URL(不包括/wordpress)的形式返回給客戶端。所以,不是重定向,只是一些內部的fakery。然後第一條規則是因爲網站中的鏈接將包括/wordpress,並且因爲我不想獲得/wordpress/wordpress,所以我需要在添加它之前將其剝離。

但顯然我誤解了一些東西。

另一個線索是,當我使用url http://example.com/about/時,第二個規則似乎沒有做它的工作。第二個規則應該使其運行,就好像它是http://example.com/wordpress/about/,但我得到一個404找不到錯誤。但是,如果我在瀏覽器欄中放置http://example.com/wordpress/about/,它會正確顯示該網頁。所以我很困惑。

+0

爲什麼downvote沒有解釋? –

回答

0

要回答我的問題,至少部分:

  1. 您不必擔心Web.config文件的URL重寫規則搞亂了W​​eb應用程序的URL。如果一個URL匹配導致一個Web應用程序,ASP.net將不會應用「一路上」的Web.config url重寫規則(例如,如果Web.config位於根目錄中),但將使用Web應用程序URL作爲-is。

  2. 在「常規設置」下的WordPress管理控制面板可以選擇設置wordpress文件的物理目錄,也可以設置網址應該如何顯示給用戶的「虛擬」目錄。最好使用這些選項,因爲試圖用自己的重定向「僞裝」wordpress是非常棘手的。