2016-04-07 30 views
1

我對單個頁面有多個查詢。爲了使URL乾淨,我使用了htaccess,但只有第一條規則才起作用。重寫規則在htaccess中不能用於類似頁面

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9_-]+)$ eventlist.php?i=$1 # 1st rule works 
RewriteRule ^([a-zA-Z0-9_-]+)$ eventlist.php?c=$1 # 2nd rule doesn't work 

第一個規則是讓我完美的結果,但第二個沒有給我任何結果。

+0

這兩個重寫規則都具有相同的正則表達式模式,第一條規則將捕獲所有內容。使用您想要分發給每個規則的示例網址更新您的問題。 –

+0

http:// localhost/10times/eventlist?i = education-training此網址必須轉換爲http:// localhost/10times/education-training –

+0

http:// localhost/10times/eventlist?c =印度必須將其轉換爲http:// localhost/10times/india –

回答

0

你的兩個規則都是一樣的,第二個規則不起作用,因爲第一個規則已經重寫了URL。除此之外,規則本身不是邏輯。

你的榜樣將執行以下操作:

  • domain.com/123將指向eventlist.php I = 123

,如果您移動第二個規則首先,會發生以下情況:

  • domain.com/123將指向eventlist.php?c = 123

你怎麼知道至極一個把你帶到EVENTLIST?

一個工作,並且更邏輯的解決辦法是:

RewriteEngine on 
RewriteRule ^i-([a-zA-Z0-9_-]+)$ eventlist.php?i=$1 
RewriteRule ^c-([a-zA-Z0-9_-]+)$ eventlist.php?c=$1 

這樣domain.com/i-123將指向eventlist.php I = 123?。這只是一個例子,你會使用類似domain.com/event-123/

編輯的更好:基於您的評論

,你想只保留一個網址並指向一個國家或行業。這是你在你的情況做笏:

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9_-]+)$ eventlist.php?ic=$1 

在你的PHP文件,你應該檢查你的數據庫/數據如果$_GET['ic']是一個國家或行業。根據您的檢查結果,您可以顯示所需的事件。

在這種情況下非常重要:不要忘記每個行業或國家必須是獨一無二的。

+0

實際上,我代表這裏的工業,c代表這裏的國家。當請求時,頁面事件列表必須按行業顯示數據,並且當請求時,相同的頁面事件列表必須按國家顯示數據。什麼是最好的解決方案 –

+0

這正是我在我的答案中解釋的。我試圖解釋它更簡單。直接更新我的答案,只需一秒鐘。 – Boratzan

+0

但我的結果是不同的是來自$ _GET ['我']和c是不同的如果來自$ _GET ['c'],所以仍然會在這種情況下工作 –