2010-07-16 107 views
1

爲了將動態URL重寫爲靜態URL,我在根文件夾中添加了一個.htaccess文件。這似乎已成功完成,但我遇到了頁碼問題。htaccess重寫規則'頁碼'問題

例如,如果您要訪問一個靜態頁面/widgets,產品的第一頁是好的....但後續頁面顯示爲/products.php?cat=27&pg=2等我想要的是後續頁面的形式的/widgets-pg2/widgets?pg=2

下面是我重寫規則,我用初始分類頁面: -

RewriteRule ^widgets$ products.php?cat=27 

如果你們專家可以幫助做到這一點,那將是非常讚賞。

回答

0

要允許查詢字符串後,你重寫URL使用[QSA]標誌:

RewriteRule ^widgets$ products.php?cat=27 [QSA] 

鏈接將比是:

http://example.org/widgets?pg=167&perpage=100&tralala=Hi! 
+2

這是QSA而不是QSM。 – Gumbo 2010-07-16 16:01:51

+0

感謝Gumbo,修正了。 – NikiC 2010-07-16 16:17:10

+0

QSA創建相關頁面,但仍需要將這些頁面添加爲鏈接。爲此,答案可以在這裏找到: - http://stackoverflow.com/questions/3422244/adjusting-a-php-function-so-that-it-displays-link-in-the-form-of-widgetspg2 – nitbuntu 2010-08-09 10:35:19

1

嘗試

RewriteRule ^widgets-pg(.+)$ products.php?cat=27&pg=$1 

之後,go here :)

+0

嘗試這樣做,它似乎對/部件的工作,但對於這導致了「沒有找到/塗鴉或/其他 - 東西沒有工作'錯誤。然後發生了一件奇怪的事情:當我將'widgets'的重寫規則改回原來的規則時,保存並上傳到服務器似乎沒有什麼區別。它仍然有效。 – nitbuntu 2010-07-17 08:23:58

+0

忽略上述消息。原因是我有一個單獨的widgets.php文件被引用並導致衝突。 – nitbuntu 2010-07-17 13:34:00

+0

如果您希望它適用於'/ doodles'或其他任何項目,則還需要將這些規則添加到每個類別的一行中。 – zildjohn01 2010-07-17 18:25:09

2

你是否期待貓也改變呢?您需要在您的網址中考慮這一點:

例如www.site.com/widgets/27/2可以被改寫爲:

RewriteRule ^widgets/([0-9]+)/([0-9]+)$ products.php?cat=$1&pg=$2 

如果部件將永遠是貓27,那麼你可以把它改成:

RewriteRule ^widgets$ products.php?cat=27 [QSA] 

這是查詢字符串追加

+0

/小部件總是cat27,而/ doodles是cat21。因此,對於我上面提到的小部件(添加QSA)以及/ widgets形式的頁面?pg = 2或/ widgets?pg = 3在手動輸入到瀏覽器時有效。但目前的鏈接並未自動更改,它們仍指向: - products.php?cat = 27&pg = 2或products.php?cat = 27&pg = 3。 – nitbuntu 2010-07-17 08:28:37

0

我嘗試以下,但它導致了「404 Not Found」錯誤,當我去/部件: -

RewriteRule ^widgets-pg(.+)$ products.php?cat=27&pg=$1 

我試着日E採用: -

RewriteRule ^widgets$ products.php?cat=27 [QSA] 

這正常工作,但去小部件頁面的第二頁,我需要在瀏覽器中鍵入: -

/widgets?pg=2 

但實際的「第2頁」鏈接仍導致: -

products.php?cat=27&pg=2 

因此,除了重寫規則....也許我需要一個單獨的重定向規則?或者可能需要更改頁碼鏈接。但由於這些是動態生成的,所以我不確定如何執行此操作。

以下是該頁面的PHP代碼: - http://freetexthost.com/3ubiydspzm