我已經創建了一個控制器文件來處理將用戶重定向到正確的URL,我希望將某些流量引導到此控制器,而不會影響其餘的。 http://website.com/shows.php?id=review-1
是我想要發送給控制器的url的示例。只使用RewriteRule將某些請求重定向到控制器文件
我到目前爲止炮製的是以下RewriteRule
這會導致站點範圍的服務器500服務器錯誤。
RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\?
RewriteCond %{QUERY_STRING} (?:^|&)id=review-[0-9]+(?:&|$) [NC]
RewriteRule^/controller.php [QSA,L]
從%{QUERY_STRING}
條件卸下-[0-9]+
擺脫了站點範圍的500服務器錯誤的,但不起作用。以下RewriteRule
,我試圖取代工作就好了。
RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\?
RewriteCond %{QUERY_STRING} (?:^|&)id=review-1(?:&|$) [NC]
RewriteRule^/review/1/super-baseball-2020/? [R=301,L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)/([0-9]+)/([a-z0-9-]+)?/?$ /shows.php?id=$1-$2 [QSA,L,NC]
最終的結果是,誰去http://www.website.com/shows.php?id=review-1
用戶將在http://www.website.com/controller.php?id=review-1
將處理處理301重定向結束。
規則我的系統上正常工作。嘗試添加一些括號。難道你不能只用'RewriteCond%{QUERY_STRING}(^ |&)id = review- [NC]'?它會比你想要的要多得多,但可能沒有你真正用於別的東西的URL。 – Gerben 2012-02-07 20:16:06