2012-06-08 146 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