2013-07-02 67 views
1

我試圖執行以下301重定向。RedirectMatch正則表達式只適用於某些瀏覽器/機器

/blog/ is not redirected. 
/blog/xxxxx/ is redirected to /blog/ 
/blog/page/x is not redirected 

我用正則表達式方面的專家,並通過相當多的計算器職位挖後,我想出了這一點:

RedirectMatch 301 /blog/((?!page/.*)[0-9a-zA-Z\-]{1,})*/ http://www.xxxxxxx.com/blog/ 

雖然這個工作對我的MAC,由於某種原因,它不是在PC上使用chrome(在/ blog /頁面上報告無限循環,與IE相同)。

我原本是以更簡單的方式編寫的,沒有[0-9a-zA-Z\-]{1,}部分。包括這是我嘗試修復chrome @ windows上的無限循環問題。

編輯:我也有一個在線的正則表達式工具測試,它似乎很好地工作: http://imgur.com/pSRCn5b

誰能提供任何指針?

回答

1

先清空瀏覽器的緩存,然後在測試中使用R = 302。

爲此更好地使用mod_rewrite。

啓用mod_rewrite的,並通過httpd.conf的.htaccess,然後把這個代碼在你.htaccessDOCUMENT_ROOT目錄:

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

RewriteRule ^(blog)/([^/]+)/?$ /$1 [L,R=302,NC] 

一旦你驗證它是否工作正常,更換R=302R=301。避免在測試mod_rewrite規則時使用R=301(永久重定向)。

+0

謝謝,這個工程。你能告訴我我最初的解決方案有什麼問題嗎? – nmford

+0

我不確定在mod_alias中是否支持lookahead。 – anubhava

+0

哎呀,謝謝:) – nmford

相關問題