項目我有同樣的問題,我想要創建一個動態重定向來啓用漂亮的鏈接/友好的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}&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;
}
我希望這可以幫助,即使該帖子有點老。
'不確定哪個是正確的使用'你使用的是Apache還是IIS?至少需要了解你的Web服務器。 –
我正在使用Apache,但我想知道這兩種方法。 – lsrwLuke