2015-10-04 20 views
1

我明白這個問題以前已經回答過很多次了,但是我沒有看到它的回答方式是足夠普遍的解釋來理解怎麼運行的。如何爲動態重定向編寫htaccess/web.config文件

我想創建一個htaccess/web.config文件(不知道哪個是正確的使用)的重定向,它將動態url重定向到看起來像實際頁面/文件夾結構的東西。

在例如www.example.com/index.php?id=1(或簡單地.com?id=1)中鍵入的URL應該與MySQL數據庫一起工作,以便確定頁面id 1的URL應該是什麼樣的,例如,如果數據庫的行ID 1網址應該是「first_page」的網址應該重定向到www.example.com/first_page/,擁有所有的www.example.com/index.php?id=1

內容在一般意義上是如何工作的任何人都可以解釋一下嗎?我明白這僅僅是我不瞭解 - 但這就是爲什麼我希望有人能夠有效解釋。

編輯:
工作Apache服務器上,但我想知道這兩種情況下,我需要同時支持與我的工作

+0

'不確定哪個是正確的使用'你使用的是Apache還是IIS?至少需要了解你的Web服務器。 –

+0

我正在使用Apache,但我想知道這兩種方法。 – lsrwLuke

回答

0

項目我有同樣的問題,我想要創建一個動態重定向來啓用漂亮的鏈接/友好的URL/SEO網址。我記住,用戶會點擊一個鏈接,然後PHP會重定向到一個漂亮的URL。我的假設是錯誤的。

您可以隨時更改通過

window.history.pushState 

顯示在瀏覽器的URL,但這只是解決問題的1份。該網站的網址看起來不錯,但對搜索引擎沒用,如果用戶將來使用這個網址,他不會找到相同的頁面。

我花了一段時間才明白,重寫url實際上不會重寫現有url來匹配瀏覽器url,而是將用戶輸入的瀏覽器url重寫爲與您的文件結構匹配的url。

因此,如果用戶正在尋找

https://www.example.com/pageid/23/joe 

重寫模塊將轉換成

https://www.example.com/page.php?pageid=23&user=joe 

這可以被用來獲取參數,動態地創建Web內容這一點。

在我開始我的參數包含像下面()之前,用戶標識這不會幫助我,因爲我想看到的東西像(後)
前:

https://www.example.com/page.php?userid=123 

後:

https://www.example.com/user/Joe 

使用標準重寫規則,這意味着您還需要通過添加用戶名作爲參數或將用戶標識更改爲唯一用戶名(作爲用戶ID的替代)來更改參數的邏輯。

在網頁中。配置(IIS),這將是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="rule 1T" stopProcessing="true"> 
        <match url="^pageid/([^/]*)/([^/]*)$" /> 
        <action type="Rewrite" url="//page.php?pageid={R:1}&amp;user={R:2}" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

第二步是那麼需要發生的所有內部鏈接:你需要改變他們的方式創建的鏈接。一種方法可能是創建一個如下所示的全局函數,您可以環繞現有鏈接,然後將每個鏈接轉換爲漂亮的鏈接。

function L($search) { //Link Rewrite function 
     global $LinkArray; //Use global variable with all Links 
     foreach ($LinkArrayas $key => $val) { 
      if ($val['OrgLink'] === $search) { 
       return $val['PrettyLink']; 
      } 
     } 
     return null;    
} 

我希望這可以幫助,即使該帖子有點老。