2016-02-04 22 views
1

我正在使用乾淨URI的PHP腳本。用兩個獲取參數在PHP中清理URL

我的問題是,我有一個頁面,首先不使用get參數,然後一個和最後兩個。

.htaccess文件中的行目前看起來是這樣的:

RewriteRule ^birthing-records/([^/]+)/?$ birthing-records.php?url=$1 [L,QSA,NC] 

但是如果我添加這樣的第二個參數:

RewriteRule ^birthing-records/([^/]+)/([^/]+)/?$ birthing-records.php?url=$1&second=$2 [L,QSA,NC] 

腳本重定向我的錯誤頁面。

我該如何設置?

對於這種情況,我需要兩行.htaccess嗎?

我通常會通過簡單地調用另一個頁面來解決這個問題,但我想保留我現在正在使用的確切URI,因爲所有這些頁面都在Google上編入索引。我真的很感激任何幫助。

+0

我想你是如何作用於你的網站,你不應該使用谷歌爲藉口不改變的URI或在幾天之內,谷歌將重新索引你的頁面或幾個星期(取決於流量),如果Google使用更多內容描述性URI,則Google將從重新編制索引中受益012 – Martin

+0

_「我需要兩行.htaccess中的這一情況嗎?」_ - 當然您需要,如果你想捕捉諸如「birthing-records/123」之類的東西,因爲你修改過的規則現在要求第二個斜槓組合。 (或者你也需要讓第二個選項也是可選的。) – CBroe

回答

2

你需要爲每個規則,否則每當你把一個參數它會打破。

RewriteRule ^birthing-records/([^/]+)/?$ birthing-records.php?url=$1 [QSA,NC] 
RewriteRule ^birthing-records/([^/]+)/([^/]+)/?$ birthing-records.php?url=$1&second=$2 [L,QSA,NC] 

感謝@馬丁這張紙幣:該的,因爲L選項指示要運行的最後一條規則的第一個的L個選項已被刪除(只有一個規則可以用L選項存在)另外,據我所知,它們各自單獨工作,但如果你想接受1或2個參數,那麼你需要兩條規則。

您可以測試htaccess的東西在這裏:http://htaccess.mwl.be/

+1

同樣值得注意的是'L'ast標誌已經從非最後的RewriteRule中刪除,聽起來很明顯,但人們錯過了那些細節... – Martin

+0

@asperon非常感謝你。這是完美的。 – Dennis