2013-01-24 77 views
0

我有問題讓URL無法輸入結尾斜槓。重寫不能在沒有結尾斜槓的情況下工作

它是:

www.domain.com/shop/buy/products/show/range/

的.htaccess重寫規則是:

RewriteRule ^shop/buy/([A-Za-z0-9]+)/show/([A-Za-z0-9\-\,]+)/?$ _shop/products.php?trg=${productmap:$1}&range=$2 [L] 

它與斜線(我不想在URL中),但不是沒有。我還應該補充說,如果我要從URL中刪除'/ show /'(儘管我不能這樣做),它的工作方式不會跟蹤斜線,或者'range'包含一個破折號' - ',如'new 「產品」,它也有效。

然而,這個URL帶或不帶斜線的工作原理:

www.domain.com/shop/buy/products/show/range/color

的.htaccess重寫規則,這個網址是:

RewriteRule ^shop/buy/([A-Za-z0-9]+)/show/([A-Za-z0-9\-\,]+)/([A-Za-z0-9\-\,]+)/?$ _shop/products.php?trg=${productmap:$1}&range=$2&color=$3 [L] 

我如何獲得第一URL不工作尾隨斜線?這可能是非常明顯的,因爲我是最近使用.htaccess的新手,但我現在花了數小時盯着代碼和閱讀關於重寫的論壇帖子,但無法解決此問題。謝謝!

+0

首先清除瀏覽器的緩存,確保它在每次測試之前完成,因爲兩個規則在正則表達式的末尾都有可選的'/?'。 –

回答

0

T'm不是那麼肯定,但你嘗試把/?在括號:(/)?,我認爲這會工作:

RewriteRule ^shop/buy/([A-Za-z0-9]+)/show/([A-Za-z0-9\-\,]+)([/]?)$ _shop/products.php?trg=${productmap:$1}&range=$2 [L] 
+0

嗨Bumerang,感謝您的建議,但不幸的是它沒有工作:( – Noak

+0

@Noak現在怎麼樣?''([/]?)'我不太熟悉正則表達式,我更新了主要答案代碼。 – bumerang

+0

謝謝,但仍然無法工作,非常令人沮喪 – Noak

0

可以測試這個代碼

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase /
RewriteRule ^shop/buy/(.*?)/show/(.*)/(.*)$ _shop/products.php?trg=$1&range=$2&color=$3 [S,L,QSA] 
RewriteRule ^shop/buy/(.*?)/show/(.*)$ _shop/products.php?trg=$1&range=$2 [S,L,QSA] 

示例:

www.domain.com/shop/buy/products/show/range/

www.domain.com/shop/buy/products/show/range

重定向到:

www.domain.com/_shop/products.php?trg=products &範圍=範圍

和:

www.domain.com/shop/buy/products/show/range/color

www.domain.com/shop/buy/products/show/range/color/

重定向Ť ○:

www.domain.com/_shop/products.php?trg=products &範圍=範圍&顏色=顏色

一個另一種方法是,你只能使用此代碼

RewriteRule ^shop/buy/(.*?)/show/(.*)$ _shop/products.php?trg=$1&range=$2 [L,QSA] 

之後在php中的分割範圍通過

list($range,$coler)=explode("/",$_GET['range']); 

它也是工作。

+0

感謝穆罕默德我無法重定向www.domain.com/shop/buy/products/show/range,因爲我找不到引用它的方法。我嘗試用(。*)結尾表達式, $但是這並沒有幫助。但是,謝謝你。 – Noak

+0

此代碼重定向與更改URL如果你想要URL更改你可以把[R,301,S,L,QSA],而不是[S,L,QSA] –

+0

這不起作用。說實話,我希望正則表達式能夠工作,以便可以使用和不使用結尾斜槓來訪問URL,而不是開始顯式地從一個頁面重定向到另一個頁面。儘管感謝您的幫助。 – Noak

相關問題