2012-06-08 151 views
0

免責聲明:是的,我做了很多搜索。是的,我閱讀論壇。是的,我試着自己解決這個問題30分鐘,它只是不工作,所以我正在尋求幫助。Htaccess重寫不起作用

一個簡單的htaccess重寫規則。這是我在用的規則:

RewriteRule ^downloads/([0-9])/$ /downloads?ID=$1 [NC,L] 

基本上我期待的是

www.url.com/downloads/1運行的/downloads?ID=1

請求出於某種原因,我經常只是得到一個錯誤「沒有發現」在我的網站上。運行一個WordPress的網站。其餘的htaccess是低於

# Use PHP5 Single php.ini as default 
AddHandler application/x-httpd-php5s .php 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

</IfModule> 

# END WordPress 

redirect 301 "/report2012/trends_2012/" "/2012-swanepoel-trends-report" 
redirect 301 "/report2011/trends_2011/" "/2011-swanepoel-trends-report" 
redirect 301 "/report2010/trends_2010/" "/swanepoel-trends-report" 
redirect 301 "/report2009/trends_2009/" "/swanepoel-trends-report" 
redirect 301 "/social_media/" "/social-media-report" 
redirect 301 "/speaking-engagements/" "/trends-keynote" 

RewriteRule ^item/([0-9])/$ /downloads?ID=$1 [NC,L] 

請幫助 - 我不知道爲什麼它不工作。謝謝。

+1

30分鐘不是那麼長:)但是它在'RewriteRule'之前的最後一行失敗。 /index.php [L]',因爲它有附加的'last'標誌。你應該放置你的規則_before_ wordpress規則 – giorgio

+0

一旦重定向到'/ downloads?ID = 1','.htaccess'會再次加載並嘗試匹配新的URL。它將匹配'RewriteRule。 /index.php [L]',你需要通過將'RewriteRule^index \ .php $ - [L]'改爲'RewriteRule ^(index \ .php | downloads)$ - [L]'來停止它。 @giorgio對優先權問題也是正確的。 –

回答

1

我把代碼放在WP規則上面。我還提出了一條防止WP表單嘗試解釋這些下載URL的鏈接。

# Use PHP5 Single php.ini as default 
AddHandler application/x-httpd-php5s .php 


# download links 
RewriteRule ^downloads/([0-9])/$ /downloads?ID=$1 [L] 
RewriteRule ^downloads - [L] 


# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

</IfModule> 

# END WordPress 

redirect 301 "/report2012/trends_2012/" "/2012-swanepoel-trends-report" 
redirect 301 "/report2011/trends_2011/" "/2011-swanepoel-trends-report" 
redirect 301 "/report2010/trends_2010/" "/swanepoel-trends-report" 
redirect 301 "/report2009/trends_2009/" "/swanepoel-trends-report" 
redirect 301 "/social_media/" "/social-media-report" 
redirect 301 "/speaking-engagements/" "/trends-keynote" 
+0

感謝這工作很好,但我不得不刪除第二行:RewriteRule^downloads - [L]使它工作。 – user1339617

+0

我看到你試圖用^ downloads下載 - [L]但是如果它在我的htaccess文件中,上一行不起作用。任何想法爲什麼?我試圖將它適應更新的版本,我發現wordpress喜歡嘗試解釋我的url並將其搞亂。 – user1339617

+0

嘗試使用'RewriteRule ^下載$ - [L]'來代替 – Gerben