2015-03-18 321 views
1

我試圖在我的服務器的.htaccess文件中進行重寫規則。重寫.htaccess中的規則

我可以讓它工作在非常簡單的URL一樣

example.com/contact.php 

example.com/contact/ 

但是,當我有一個稍微複雜的網址,我不能使它發揮作用。

我的網址是:

example.com/hotels/hotelPage.php?go&hotelname=NAME&hotelId=NUMBER 

我想這是訪問這樣

example.com/hotels/NAME-NUMBER/ 

這可能嗎?我曾嘗試版本,如:

RewriteRule ^hotels/(\w+)/?$ hotels/hotelPage.php?go&hotelname=$1 [NC,L] 

這一個:

RewriteRule ^hotels/^[A-Za-z-]+/([A-Za-z0-9-]+)/?$ hotels/hotelPage.php?go&hotelname=$1 [NC,L] 

沒有一個似乎爲我工作。

+0

.htcaccess?你的意思是.htaccess?或者這是一些HTC手機特定的網站訪問文件? – Martin 2015-03-19 00:46:30

+0

您的兩個示例完全不同,其中一個 - 第一個 - 重寫URL,另一個 - 第二個 - 接受GET變量並將它們用作URL佔位符。 – Martin 2015-03-19 00:47:50

+0

_「這可能嗎?」 - 當然是。但是由於URL重寫是一個相當詳細的文檔,已經被廣泛討論過了,我想說你應該對此做一些適當的研究,而不是僅僅問「是否可能」。 – CBroe 2015-03-19 00:56:38

回答

0

看起來你靠近,嘗試:

RewriteRule ^hotels/^([A-Za-z-]+)-([A-Za-z0-9]+)/?$ hotels/hotelPage.php?go&hotelname=$1&hotelId=$2 [NC,L] 

此正則表達式假定第一組是酒店名稱:([A-Za-z-]+)

,第二個是酒店ID:([A-Za-z0-9]+)

所以酒店名稱可以只有是字母和破折號,而id可以是字母和數字。 ID不能有任何破折號,因爲除了最後一個,第一個正則表達式會貪婪地吞噬它們。

+0

我得到一個404仍然與此 - 我需要設置基地網址也許? – 2015-03-19 01:20:02

+0

我在Godaddy上有服務器 – 2015-03-19 01:37:39