2013-03-29 21 views
1

我試圖匹配「job =」後面的數字序列,而忽略之前和之後的數字「list.php?job = 11534 & name」匹配特定文本後的URL中的數字序列

下面我發佈了我到目前爲止對網址沒有任何影響的內容。 另外,如果規則匹配或不管什麼,只有[L]纔會停止重寫引擎?

在此先感謝您的幫助。

當前規則:

RewriteEngine On 
    RewriteCond %{QUERY_STRING} (?:^|&)job=([^&]+) 
    RewriteRule ^([0-9]+)$ /positions/job/$1 [L] 

    # Removes index.php from ExpressionEngine URLs 
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 
+0

你難道沒有添加'? '^ |&| \?'中的字符? – sp00m

回答

2

RewriteRule ^([0-9]+)$將匹配只包含數字(/4666)的請求,此正則表達式應放置在的RewriteCond而是%1會提到它,並尾隨?在重寫過程中,從新的url中排除查詢字符串(是你想要的嗎?)。

L僅當規則匹配時纔會停止當前URL的重寫引擎。

RewriteCond %{QUERY_STRING} (?:^|&)job=([0-9]+) 
RewriteRule ^.+$ /positions/job/%1? [L] 

,如果你想將用戶重定向到新的URL,加上R到重寫規則選項([L,R=301]),

要小心,這些指令都會重定向該查詢字符串相匹配job=([0-9]+)的任何網址新的網址,如果你想限制重定向到特定請求(如/folder/list.php?job=qsd&name=qsd),一定要包括他們在重寫規則,所以該指令是:

RewriteCond %{QUERY_STRING} (?:^|&)job=([0-9]+) 
RewriteRule ^folder/list\.php$ /positions/job/%1? [L] 
+0

謝謝。我明白你爲什麼做這個改變,但是當我嘗試這個時,我會進入主頁的URL? – jsuissa

+0

我正在尋找的最終的URL是'http:// www.example.com/positions/job/1234' – jsuissa

+0

這正是這些指令所做的,如果你想要在用戶瀏覽器中顯示新的url,將R添加到重寫規則選項[L,R = 301] –

相關問題