2016-09-26 155 views
1

我一直在遍地搜索,但似乎無法讓它工作。htaccess自定義重定向不工作

這段代碼完全運行:

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^/?artists/[\w-]+/([\w-]+)/([\w-]+)/?$ /dir1/artist.php?artist_id=$1&page_id=$1 [L,QSA,NC] 
RewriteRule ^/?tour/[\w-]+/([\w-]+)/?$ /dir2/index.php?artist_id=$1 [L,QSA,NC] 
RewriteRule ^/?video/[\w-]+/([\w-]+)/?$ /dir3/index.php?artist_id=$1 [L,QSA,NC] 
RewriteRule ^/?news/[\w-]+/([\w-]+)/?$ /dir4/article.php?artist_id=$1 [L,QSA,NC] 

然而,在此之後我試試這個下面,並且有從服務器完全沒有反應。它只是加載(仍然在服務器上)

我自定義的重定向嘗試,嘗試和沒有工作

RedirectMatch 301 ^/old_dir//old_file.html /artists/subdir/21/biography/ 
RewriteRule /old_dir//old_file.html /artists/subdir/21/biography/ [L,R=301] 

任何人知道如何設置自定義第一的RewriteRules後轉到舊的頁面?

ps。甚至沒有@ anubhava的答案作品(htaccess Redirects Not Working Right

回答

1

你的正則表達式是301規則的問題:

RewriteEngine On 

RewriteRule ^old_dir/old_file\.html$ /artists/subdir/21/biography/ [L,R=301,NC] 

RewriteCond %{SCRIPT_FILENAME} -d [OR] 
RewriteCond %{SCRIPT_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^/?artists/[\w-]+/([\w-]+)/([\w-]+)/?$ /dir1/artist.php?artist_id=$1&page_id=$1 [L,QSA,NC] 
RewriteRule ^/?tour/[\w-]+/([\w-]+)/?$ /dir2/index.php?artist_id=$1 [L,QSA,NC] 
RewriteRule ^/?video/[\w-]+/([\w-]+)/?$ /dir3/index.php?artist_id=$1 [L,QSA,NC] 
RewriteRule ^/?news/[\w-]+/([\w-]+)/?$ /dir4/article.php?artist_id=$1 [L,QSA,NC] 

順便說一句我看不出這個問題的關係與鏈接的答案(即回答是添加wwwhttps

希望你:)

+1

我的答覆工作,但這次仍是天才!非常感謝你解決這個問題!抱歉沒有正確閱讀其他問題。這件事上的文盲很多。 – KJS