簡體   English   中英

關聯聯盟ID的htaccess重寫規則

[英]htaccess rewrite rule for affiliate id

我的網站只是index.php,每個頁面都是從那里讀取的。 我沒有使用WordPress。

我想要做的是與WordPress的頁面結構相同的事情。 在Wordpress中,您可以設置重寫規則,以便后續子目錄可以將值傳遞給index.php

我有一個構建聯盟網絡的客戶端,基本URL是例如:

mywebsite.com/?id=viktor 

他們想要解析URL,這樣對客戶來說就簡單得多了。

mywebsite.com/u/viktor會'重寫'到mywebsite.com/?id=viktor

什么是.htaccess規則或相關的PHP我必須放在index.php

顯然,我們在網站上沒有'u'文件夾。 :)

謝謝你的幫助。

我相信這個相關的問題有我們正在尋找的代碼但是我不確定它在這種情況下會如何應用

你可以這樣做:

RewriteEngine On
RewriteRule ^u/(.+)$ /?id=$1 [NE,L]

如果您還需要保留任何現有的查詢字符串(例如/u/viktor?param=value ),請使用以下命令:

RewriteEngine On
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L]

更新

好吧,使用相對URL是不好的做法(出於這個原因),但如果你真的想避免更新所有代碼,這可以通過腳本或命令輕松完成,你可以這樣做:

RewriteEngine On
RewriteRule ^u/(.+/.+) /$1 [NE,L]
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L]

這將重寫/u/下root文件夾中引用的所有內容。 但它打破了瀏覽器緩存,因為您的所有資源現在都有兩個URL。 實際上,您應該將您的網址更新為絕對網址。

如果以上內容對您不起作用且您只想重寫特定文件夾,請執行以下操作:

RewriteEngine On
RewriteRule ^u/((?:assets|images|css)/.+) /$1 [NE,L]
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L]

根據需要替換文件夾名稱。

你在這里遇到的問題Viktor是WordPress在處理請求時檢查原始 URL。 這是因為它有自己的mod_rewrite規則來重寫index.php所有內容。

所以你不能用mod_rewrite做你想做的事情,因為WordPress不會查看你的重寫URL,而是將它作為/u/viktor 您可以使用301重定向執行此操作,但您已經說過您不想這樣做。

為了使其正常工作,您需要使用WordPress來使這些URL工作,也許創建一個插件來完成它。 我不建議在WordPress的index.php添加任何內容,因為它只會在WordPress更新時被覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM