2011-11-21 98 views
4

我試圖使用有我的index.php作爲與下面的代碼的關鍵htaccess的修剪下來我的網址:htaccess的重定向使用mod_rewrite對SEO友好的URL

RewriteEngine on 
    RewriteRule ^([^/]+)$ index.php?city=$1 [NC] 

要與我的會員區使用,做我只是添加以下具有多個字,即一個城市的活動上mysite.com/members/index.php?city=$1

 RewriteRule ^members/([^/]+)$ index.php?city=$1 [NC] 

工作:紐約市,什麼最好的辦法接近這個?在.htaccess中定義它(不確定是否可能)來改變紐約市 - >紐約市或實際上任何空間到短劃線。或者,在PHP中使用函數替換使用$ _GET的db查詢的'' - >' - '?

回答

5

我會用PHP中的破折號替換空格,然後重定向到新版本的URL以獲得易於讀取的地址。 (空格編碼爲%20是不完全容易閱讀)

這樣,你仍然可以輸入地址domain.com/new york city,但會被重定向到domain.com/new-york-city而不是domain.com/new%20york%20city

在.htaccess的替代可能是像這樣的東西:

RewriteRule ^([^\s]*)\s(.*) $1-$2 [N] 

(基於答案Search and replace in apache htaccess a RewriteRule

+0

我試圖用,它返回一個500錯誤,要更多地研究它看看我是否可以調試。 – Mike

+0

我回來了,它確實通過了(我第一次粘貼錯誤),但它與我已有的一致,RewriteRule ^([^ /] +)$ index.php?city = $ 1 [NC]通過城市= as test.php – Mike

+0

你在原來的RewriteRule之前放置了空間替換器嗎? – Kleist