2012-11-29 48 views
1

這是我的htaccess代碼:htaccess的重定向做錯誤的頁面方向

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine on 

RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /Songs/Songs\.php\?movie=([^&\ ]+)([^\ ]*) 
RewriteRule ^/Songs/%3?%4 [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/?Songs/(.*)$ /Songs/Songs.php?movie=$1 [L,QSA] 


</IfModule> 

這是完全重定向像

localhost/Songs/Songs.php?movie=anymovie-2012 

localhost/Songs/anymovie-2012 

但當我

localhost/Songs/<anytext> 

例如,

localhost/Songs/test 

那麼它也稱爲songs.php而不是拋出頁面未找到錯誤。

如何在頁面未找到錯誤,如果最後一個關鍵字不存在於數據庫中。

對於解決方案,

我應該需要songs.php文件或.htaccess文件,我需要做什麼類型的代碼的代碼?

+0

是什麼使得字符串對重定向有效?它是否必須遵循標題年的格式,或者在可接受的範圍內是否存在其他規則? – Wige

+0

最後的值總是像「moviename-year-mp3」這樣的格式。 – iChirag

回答

1

您需要在您的條件中更加具體地瞭解應該重定向的格式;例如

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} ^[a-z0-9]+\-[0-9]{4}(\-[a-z0-9]+)?$ 
RewriteRule ^/?Songs/(.*)$ /Songs/Songs.php?movie=$1 [L,QSA] 

應該工作。新行需要標題短劃線年,標題只能包含小寫字母和數字,年份必須是四個數字,然後是可選的字母和數字字符串。