2010-08-08 45 views
0

目前我的.htaccess看起來像這樣...我如何讓.htaccess做我想做的事? :)(追加查詢字符串URL)

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 


RewriteRule ^(.*)$ $1.php [L,QSA] 

目前,它改變任何/xxx.php文件到/ XXX。這對搜索引擎優化很有用。不過,我還希望htaccess先生將某些URL轉換爲URL +查詢字符串。例如,當用戶進入

/特定/ somerandominfo

然後somerandominfo傳遞給specific.php文件。我通常使用重寫來完成這項工作並沒有問題,但是由於我重新編寫了奇怪的程序,我無法弄清楚如何去做。

例如,如果我添加

RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC] 

我的.htaccess,然後打了/特定/ somerandominfo只是提供了我一個大胖子500內部服務錯誤。

任何來自你的apache大師的幫助都會是如此的如此酷。

謝謝!

p.s.任何人都想要拋出他們喜歡的任何其他酷SEO技巧?我會烤餅乾。

回答

1

由於您的規則正在創建無限循環,因此您將收到500錯誤。檢查Apache的錯誤日誌,看看它是否屬實。所以你應該正確地設計你的規則。也許這樣的:

RewriteRule ^([^/]*)$ $1.php [L] 
RewriteRule ^(.*)/(.*)$ $1.php?var=$2 [L] 
+0

他發佈的規則無法創建無限循環。雖然這可能是事實(他沒有發佈他使用的真正規則)。 – Artefacto 2010-08-08 10:05:48

+0

其實他們是。我已經在我的xampp上測試過它們。 – ehpc 2010-08-08 10:44:11

+0

嘿那裏,我發佈的規則幾乎是我使用的實際規則的CC。我只是將.php文件名從「workouts」更改爲特定,並將$ _GET變量從「id」更改爲「somerandominfo」:) 另外,ehpc是否會創建一個案例,其中我將轉到的任何文件將被視爲一個var?例如,如果我有一個名爲test的文件夾,並且該文件夾是first.php,那麼這組重寫將嘗試處理/測試/首先嚐試發送var = first到test.php?對不起,如果這是一個複雜的問題。 :) 謝謝你的幫助! – Dylan 2010-08-08 16:47:47

0
RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC] 

這是最正確的。我只是添加B標誌,就像這樣:

RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC,B] 

這將導致捕獲組$1是正確轉義的查詢字符串中使用。請注意,您仍然可以使用QSA來保留原始請求中使用的查詢參數(除somerandominfo之外)。

也許你會想發佈你的實際RewriteRule。

+0

嗨藝術, 實際規則我是用看起來像...... 重寫規則^鍛鍊/([^ /] +)$ /workouts.php?id=$1 [NC ] 當我嘗試訪問/鍛鍊/ 8,例如,我確實收到500. 非常感謝您的幫助! – Dylan 2010-08-08 16:50:30

相關問題