2012-12-19 54 views
2

網站搶第二URL字符串我正在改變網址的規則是這樣的:mod_rewrite的:在正則表達式

RewriteRule ^(.*)/(.*)/$ string.php?id=$1&slug=$2 [L,NC] 

從而產生ID /塞。我想刪除ID部分,但不知道如何只選擇slu。。這樣做的:

(.*)/$ string.php?id=$1&slug=$2 [L,NC] 

創建從ID,而不是塞一個網址...

這可能是一個簡單的答案,但我不能找到它...謝謝!

+0

等待,所以要完全刪除ID只有依靠像'example.com/slug'蛞蝓?或者你不想在最終查詢字符串中使用id,例如'example.com/id/slug >> string.php?slug = slug'? –

+0

你最終的網址應該是什麼樣子?它應該指向什麼? –

+0

對不起,我想要example.com/slug。謝謝! –

回答

0

要匹配只有slu,,你想捕獲slu into $1。您的嘗試捕獲了$1,但將其傳入id=

# [^/]+ matches everything up to but not including/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)$ string.php?slug=$1 [L,NC] 
+0

我寫了'RewriteRule ^([^ /])+ $ contactus.php?id = $ 1&slug = $ 2 [L,NC]',但它使網站崩潰...... Firefox表示該網站使用重定向一種永遠不會完成的方式。 –

+0

我有點盲目地嘗試在$ - 'RewriteRule ^([^ /])+/$ contactus.php?id = $ 1&slug = $ 2 [L,NC]'之前添加一個斜槓,它可以停止崩潰,但不起作用重定向。 –

+0

'#[^ /] +直到但不包括/ 的RewriteCond%{} REQUEST_FILENAME!-f 的RewriteCond%{} REQUEST_FILENAME!-d 重寫規則^([^ /])+ $ contactus.php匹配一切嗎?蛞蝓= $ 1 [L,NC]' 沒有崩潰,但新的網址無效。我嘗試過加入ID字符串到查詢: '#[^ /] +匹配了一切,但不包括/ 的RewriteCond%{} REQUEST_FILENAME -f 的RewriteCond%{} REQUEST_FILENAME -d 重寫規則^(! [^ /])+ $ contactus.php?id = $ 1&slug = $ 2 [L,NC]' 具有相同的結果。感謝你的努力,以幫助我到目前爲止:) –

0

我認爲你的問題是你使用slug = $ 2,但是你的更新的RewriteRule沒有第二個捕獲組。

RewriteRule ^(.*)/$ string.php?slug=$1 [L,NC] 

如果您的網址是http://www.example.com/slug這將產生http://www.example.com/string.php?slug=slug

+0

不起作用:/我很好奇這是如何工作的。在我看來,新的URL將有兩個部分,替代路徑將會到達不存在的地方,儘管我對此的理解並不太全面...... –

+0

我更新了我的答案,我對什麼感到困惑你試圖匹配,也是你想要製作的東西。 –

相關問題