2014-10-02 187 views
0

我想更改我的網站中的我的網址。我讀過一些文章,現在,我知道如何重寫URL是這樣的:更改地址欄中的網址

用戶輸入地址欄=> www.example.com/Q1
和加載頁面=> www.example.com/dir1/ cat.aspx ID = Q1

但我想這樣:

用戶輸入地址欄=> www.example.com/dir1/cat.aspx?id=Q1
和瀏覽器中顯示地址欄=> www.example.com/othername/Q1

有沒有什麼辦法呢?


這是關於重寫我的webconfig的一部分:

<system.webServer> 
 
    <rewrite> 
 
     <rules> 
 
     <rule name="Rewrite page to aspx" stopProcessing="true"> 
 
      <match url="^([a-z0-9/]+)$" ignoreCase="false" /> 
 
      <action type="Rewrite" url="{R:1}.aspx" /> 
 
     </rule> 
 
     </rules> 
 
     <rule name="Rewrite item ID" stopProcessing="true"> 
 
     <match url="^items/([0-9]+)$" ignoreCase="false"/> 
 
     <action type="Rewrite" url="items.aspx?id={R:1}"/> 
 
     </rule> 
 
     <rule name="Redirect to clean URL" stopProcessing="true"> 
 
     <match url="^([a-z0-9/]+).aspx$" ignoreCase="true"/> 
 
     <action type="Redirect" url="{R:1}"/> 
 
     </rule> 
 
    </rewrite>

+0

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html 您可以使用.htaccess文件重定向指令或類似實現這一目標。 – Cyclonecode 2014-10-02 05:59:23

+0

我的房東是窗戶。它工作嗎? – mahdi 2014-10-02 06:10:49

+0

你使用哪個網絡服務器?如果你正在運行IIS,那麼我認爲你應該啓用'ISAPIRewrite' – Cyclonecode 2014-10-02 06:13:19

回答

1

我無法找到我真正的答案。但我發現了一個簡單的方法來重寫我的網址沒有這種部分解決我的問題,任何設置和模塊:

您可以在global.asax中改寫:

void Application_BeginRequest(Object sender, EventArgs e) 
    { 
     String strCurrentPath; 
     String strCustomPath; 
     strCurrentPath = Request.Path; 
     if (strCurrentPath.EndsWith("/home/")) 
     { 
      strCustomPath = strCurrentPath.Replace("/home/", "/presentation/default.aspx"); 
      Context.RewritePath(strCustomPath); 
      return; 
     } 
     else 
     { 
      if (strCurrentPath.Contains("/dir1/")) 
      { 
       strCustomPath = strCurrentPath.Replace("/dir1/", "/othername/cat.aspx?cid="); 
       Context.RewritePath(strCustomPath); 
       return; 
      } 
     } 
    } 
0

如果你使用Apache,這可以通過添加以下到.htaccess文件來完成:

RewriteEngine on 
# check if the query string contains an `id` equal to `Q1` 
RewriteCond %{QUERY_STRING} id=Q1 
# rewrite `dir1/cat.aspx` to `othername/Q1` 
RewriteRule dir1/cat.aspx http://www.example.com/othername/Q1? [R=301,L] 

如果是web.config文件上面的應該是這個樣子:

<rule name="rule 1k" stopProcessing="true"> 
    <match url="dir1/cat.aspx" /> 
    <conditions trackAllCaptures="true"> 
    <add input="{QUERY_STRING}" pattern="^id=Q1" /> 
    </conditions> 
    <action type="Redirect" appendQueryString="false" url="http://www.example.com/othername/Q1" /> 
</rule> 

參考

Apache Module mod_rewrite

Translate .htaccess Content to IIS web.config

+0

重寫不是我的問題。我想在自動輸入地址欄後更改地址欄中的網址。例如:我寫:www.example.com/presentation/default.aspx然後在地址欄網址中加載頁面www.example.com – mahdi 2014-10-02 07:19:05

+0

@mahdi - 是的,「R」標誌將爲您做到這一點。 – Cyclonecode 2014-10-02 07:45:24

+0

它不工作,我想要的。 – mahdi 2014-10-02 09:05:12

0

您可以使用IIS - URL重寫。

這是您需要安裝的附加模塊。 安裝完成後,您可以在儀表板上找到它。 從這裏,添加一條規則將傳入的URL更改爲所需的URL。

這是一個夢幻般的指導: https://www.youtube.com/watch?v=hkEFPzixiVE