2016-08-19 38 views
1

這對我來說有點棘手,我想盡可能減少這個URL。理想情況下,我想改變這個網址:.htaccess重寫使用get變量來替換文件名

http://www.example.co.uk/profile/profile.asp?profile_id=1&top=1&abt=2&ft=3&school=Something%20School

到:

http://www.example.co.uk/something-school/

使用.htaccess文件。

這意味着我們將使用學校獲取變量來替換.asp文件名,擺脫/ profile /以及其他獲取變量。

這可能嗎?如果是這樣如何?如果不是,你可能會給我一個替代方案嗎?

任何幫助將不勝感激!

編輯

Badhorsie已經寫了我重寫規則,不準確的轉換的用戶。不幸的是,網頁無法加載,因爲這些獲取變量不幸是頁面加載所必需的。

我猜測這是不可能隱藏獲取變量。在這種情況下,可以保留獲取變量,但要保持清潔?看起來目錄也是必要的?

也許是這樣的:www.example.co.uk/profile/something-school/1/1/2/3

我們可以擺脫學校得到變量,因爲不需要它(只需要。更換配置文件/ profile.asp部分

+0

.htaccess鏈接到apache服務器,因爲你的文件類型是'.asp'我假設你有一個ASP.NET服務器 – feareoc

+0

你可以分享你已經嘗試過嗎? – starkeen

+0

嗨Rasmus,我們有一個模塊安裝在服務器上,它解釋.htaccess文件,所以不應該是一個問題。 – Aasim

回答

0

試試這個:

RewriteCond %{QUERY_STRING} (.+(?=&school))school=([\w%-]+) 
RewriteRule ^profile/profile.asp /%2?%1 [L,NE,R=301] 
+0

不幸的是,這產生了:http://www.example.co.uk/Example%2520School?profile_id=1&top=1&abt=2&ft=3&school=Example%2520School這是不工作。 – Aasim

+0

@Aasim對不起,現在試試。我修好了它。 – BadHorsie

+0

嗨Badhorsie,它確實做了重寫,但頁面無法加載。我假設這是因爲重寫不保留get變量。在這種情況下,除了學校變量,我們可以保留這些。 – Aasim

0

你有沒有試過這種重寫規則嘗試在你的.htaccess文件中添加此代碼

RewriteRule ^http://www.example.co.uk/profile/profile.asp?profile_id=1&top=1&abt=2&ft=3&school=Something%20School?$ http://www.example.co.uk/something-school/ [L] 
+0

它需要動態的 – Aasim