2009-11-17 102 views
1

我有以下格式的URL: domain/product.php?name=product a重寫包含URL空間

現在我需要重寫這: domain/product a(包括字的空間),如: http://www.directline-holidays.co.uk/Costa Blanca

怎麼辦我這樣做?我走到這一步,最近的結果如下: domain/p/product-a

用下面的代碼在.htaccess

RewriteEngine On 
RewriteRule ^p/([^/]*)/$ destination.php?name=$1 

我甚至不能使用名稱不帶「 - 」。我需要產品名稱,就像它在數據庫中一樣。這可能嗎?

回答

3

這應該工作:它會簡單地將/ p /目錄後的URL字符串的其餘部分提供給字符串的末尾,在您的情況下,該字符串應該是URL的末尾,是正確的?

RewriteRule ^p/(.*)$ destination.php?name=$1 

對於不是產品頁面,如果你知道他們會在PHP文件擴展名,你可以篩選規則與下列這些頁面結束的頁面:

RewriteCond %{REQUEST_URI} !^.*(destination\.php).*$ 
RewriteRule ^([^\.php]+)$ destination.php?name=$1 

編輯:通過增加對的RewriteCond destination.php

+0

我已經得到它的工作,問題是,我只想要產品域名後的名稱。沒有/ p – Kunal 2009-11-17 19:26:11

+0

我看到...所以應該是:RewriteRule ^(。*)$ destination.php?name = $ 1 – jaywon 2009-11-17 19:30:07

+0

它將所有內容重定向到destination.php頁面...需要檢查以便它不會重定向.php頁面,如域/ index.php,域名/ contact-us.php等頁面到目標頁面...事件只有鍵入域/正在重定向到destination.php頁面... ...嗎? – Kunal 2009-11-17 19:41:00

2

附加 「%20」 的URL,如:

http://www.directline-holidays.co.uk/Costa%20Blanca 

在十六進制基座20是用於空間的ASCII數字。

編輯:

除了powtac的評論:

使用JS encodeURIComponent方法()函數來編碼應在URL中使用的值: http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp

+2

如果您使用PHP創建鏈接添加鏈接周圍的urlencode(),它會自動添加%20和其他東西。 – powtac 2009-11-17 18:42:41

+0

謝謝,我已經解決了它。現在我需要的是重寫規則,這將允許我只使用產品名稱來創建url。請幫助。 – Kunal 2009-11-17 18:55:57

+0

@Kunal:嘗試以下REGEXP: ^ [^ /] $ – Dor 2009-11-17 19:05:08

1

試試這個規則修正了無限循環的情況..

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule product-name-(.*)\.htm$ product.php?name=$1 

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule product/name/(.*)/ product.php?name=$1 
RewriteRule product/name/(.*) product.php?name=$1 
+0

我更喜歡使用我寫的第一個。我根據我使用的服務器有第二個問題。 – Luis 2009-11-17 20:14:58

0

你的意思是,如果目的地是一個PHP文件,不rewirte它,否則重寫任何事情destination.php?如果是的話,這應該工作

RewriteEngine On 
RewriteCond %{REQUEST_URI} !\.php$ 
RewriteRule ^(.*)$ destination.php?name=$1