2017-06-21 165 views
1

我的網站只是index.php,每一頁都讀取。我沒有使用WordPress。htaccess會員重寫規則

我正在尋找的是WordPress的頁面結構。在Wordpress中,您可以設置重寫規則,以便後續子目錄可以將值傳遞至index.php

我有一個建立一個分支機構網絡和基礎URL一個客戶端,例如:

mywebsite.com/?id=viktor 

他們希望解析URL的代替,它是爲客戶要簡單得多。

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

什麼是.htaccess規則或相關的PHP我不得不放在index.php

很明顯,我們在該網站上沒有「u」文件夾。 :)

感謝您的幫助。

This related question I believe has the code we're looking for however I'm not sure how it would apply in this situation

+0

聯盟會員ID是什麼格式?如果重寫總是將用戶帶回到mywebsite.com主頁,或者通過傳遞URL參數來請求用戶? – BenM

+0

這是一個用戶名,例如id = viktor,但我們不希望它重定向。當書籤時,它仍然顯示爲mywebsite.com/u/viktor並將id變量傳遞給index.php – Viktor

回答

2

你可以這樣說:如果你還需要保留所有現有的查詢字符串(如/u/viktor?param=value

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

,使用此:

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/下根的一切。但是它破壞了瀏覽器緩存,因爲所有的資源現在都有兩個URL。真的,你應該只更新你的網址到絕對。

如果上述不爲你工作,你只需要重寫特定的文件夾,像這樣做:

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

更換您的文件夾名稱爲合適。

+0

然而,這仍然有效,但UNIX仍然將CSS看作「u」文件夾內的CSS,即href =「assets/css/custom-animations.css」,所以圖像不被引用。我們必須進入並重做每一行代碼,包括並添加一個/。有沒有辦法重寫規則,但仍然將'目錄'移回到根目錄,即使我們把/ u/- 看到http://ufunnel.net/u/earthgrid - 你可以看到CSS和一切都不是'因爲它認爲它在'u'文件夾中。我們很近!!!!! – Viktor

+0

有沒有比修改每個文件和頁面的絕對相對引用更簡單的方法? 例如 - 當你重寫時 - 也退回一個目錄,即../對於所有的引用。這是一個靈魂!謝謝你的幫助! – Viktor

+0

我添加了關於該更新。這不是UNIX,它是這樣看的,它是網絡瀏覽器。 – SuperDuperApps

1

你有問題就在這裏,維克多,是WordPress的檢查 URL時,它正在處理的請求。這是因爲它有自己的mod_rewrite規則來重寫所有內容到index.php

所以你不能用mod_rewrite做你想做的事情,因爲WordPress不會去看你的重寫的URL,並將它作爲/u/viktor來處理。你可以用301重定向來做,但你已經說過你不想這樣做。

爲了使這個工作正常,你需要使用WordPress來使這些URL工作,也許創建一個插件來做到這一點。我不會向WordPress的index.php添加任何內容,因爲它只會在WordPress更新時被覆蓋。

+0

OP沒有使用Wordpress,他們只是想做一些Wordpress正在使用的東西。 – Iceman

+1

所以我現在看到這個問題已經更新:)謝謝你的擡頭。 – SuperDuperApps