2013-06-27 98 views
1

我試圖重寫URLURL重寫錯誤

site.com/videos?cat=1&page=2 

這個

site.com/videos/cat-1/page-2 

,並使用此:

RewriteRule ^videos/cat-([0-9]+)/page-([0-9]+)/?$ videos?cat=$1&page=$2 
RewriteRule ^videos/cat-([0-9]+)/?$ videos?cat=$1 

我得到錯誤#500(內部服務器錯誤)。什麼可能是錯誤的?

回答

3

最有可能你在Apache中的mod_rewrite引起無限循環並且這是造成500

這種替換代碼:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# to redirect /videos?cat=1&page=2 => /videos/cat-1/page-2 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(videos)\?cat=([^&]+)&page=([^\s]+) [NC] 
RewriteRule^/%1/cat-%2/page-%3? [R=302,L,NE] 

RewriteCond %{QUERY_STRING} !^.+$ [NC] 
RewriteRule ^videos/cat-([0-9]+)/?$ /videos?cat=$1 [L,QSA,NC] 

# to forward /videos/cat-1/page-2 => /videos?cat=1&page=2 
RewriteCond %{QUERY_STRING} !^.+$ [NC] 
RewriteRule ^videos/cat-([0-9]+)/page-([0-9]+)/?$ /videos?cat=$1&page=$2 [L,QSA,NC] 
+0

謝謝,那實際上工作。我不明白一些參數,但我會在網上搜索它們。 –

+0

是的,它應該工作,任何問題請留下評論。爲了指導mod_rewrite的使用:http://httpd.apache.org/docs/2.2/rewrite/ – anubhava

+0

其實現在這個return''找不到對象!''有什麼想法爲什麼? –

3

這看起來是正確的,但你想做什麼實際上是倒過來 - 你試圖改寫輸入網址:

site.com/videos/cat-1/page-2 

要:

site.com/videos?cat=1&page=2 

編輯 你已經編寫了規則重定向從videos/cat-1/page-2videos?cat=1&page=2。雖然這是你的選擇,但如果你正在爲搜索引擎優化或更清潔的網址撰寫規則,那麼你希望人們輸入的網址是videos/cat-1/page-2 - 在這種情況下,你擁有的規則將會正常工作。

如果你想讓人們輸入messier url,那麼@ anubhava的答案對你來說是完美的。

+0

如何在適當的方式進行呢? –

+0

規則沒問題 - 您是在瀏覽器中輸入'site.com/videos/cat-1/page-2'還是'site.com/videos?cat = 1&page = 2'? –

+0

'site.com/videos?cat = 1&page = 2'像這樣 –