2012-03-17 23 views
0

嗨擴大從澳大利亞中部,謝謝你們的幫助簡單重寫規則與錨

我有一個簡單的重新編寫這樣

RewriteEngine on 
RewriteRule Trades-Services-(.*) Trades-Services.php?cat=$1 [L,NC] 

這樣做是變成這樣

網址
http://website.com/Trades-Services-Plumber 

這個

http://website.com/Trades-Services.php?cat=Plumber 

我希望的是進一步(或讚美),其重寫規則,以便它會變成這個

http://website.com/Trades-Services-Plumber-123 

這個

http://website.com/Trades-Services.php?cat=Plumber&ad=123#123 
  • 如果它拋出一個錨,以及(#123 )
  • 123可以是任何數字並始終與錨
  • 相同,同時仍保留第一功能
  • 它也可以與像民間禮,而不是一個管道工工作URL

http://website.com/Trades-Services-Civil-Celebrant-123 
to 
http://website.com/Trades-Services.php?cat=Civil-Celebrant&ad=123#123 

三江源

回答

1

來做大量的改寫,你需要改變現有的規則並添加額外的一個處理第二種情況:

RewriteEngine on 
RewriteRule ^Trades-Services-(.+)-([0-9]+)$ /Trades-Services.php?cat=$1&ad=$2 [L,NC] 
RewriteRule ^Trades-Services-(.+)$ /Trades-Services.php?cat=$1 [L,NC] 

這應該足以支付4所要求3,除了用於第一:

凡拋出上的錨定以及(#123)

的URL片段,所述#123位,是由瀏覽器處理並且在網址具有#名稱,#name片段永遠不會發送到服務器。所以服務器無法知道這個片段,這是瀏覽器看到的東西,瀏覽器尋找到文檔中的錨點。你可以做的是重定向獲得錨。然後第一個規則是這樣的:

RewriteRule ^Trades-Services-(.+)-([0-9]+)$ /Trades-Services.php?cat=$1&ad=$2#$2 [L,NC,R] 

然而,當有人進入他們的瀏覽器地址欄中http://website.com/Trades-Services-Plumber-123,該規則將瀏覽器重定向到http://website.com/Trades-Services.php?cat=Plumber & ad = 123#123,因此瀏覽器地址欄中的內容變成了php的URI。這與您的原始規則(在服務器端進行內部重定向,保留瀏覽器地址欄中的內容)中的行爲不同。你可以做的另一件事是當你生成鏈接如http://website.com/Trades-Services-Plumber-123,確保有一個片段添加到它:http:// website。com/Trades-Services-Plumber-123#123

+0

好的答案男人! – LazyOne 2012-03-17 21:42:34