[英]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.