为什么我的hacess重写返回404?

时间:2012-10-12 作者:fish man

这是我的.htaccess 文件

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteRule ^abc/products-(.+)$ def/products-$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>
我在/abc/sub目录中有许多url链接,如

http://www.domain.com/abc/products-12345
http://www.domain.com/abc/products-23456
http://www.domain.com/abc/products-34567
http://www.domain.com/abc/new-items
现在我想将/abc/products-url重写为/def/products-

http://www.domain.com/def/products-12345
http://www.domain.com/def/products-23456
http://www.domain.com/def/products-34567
http://www.domain.com/abc/new-items
代码:RewriteRule ^abc/products-(.+)$ def/products-$1 [R=301,L] 可能使页面重定向,但键入时http://www.domain.com/abc/products-12345 浏览器将转到http://www.domain.com/def/products-12345 但页面显示为404. 如果我移除它,http://www.domain.com/abc/products-12345 可以运行良好。为什么以及如何?谢谢

Update:

我搬家了RewriteRule ^abc/products-(.+)$ def/products-$1 [R=301,L] 在…前面RewriteRule ^index\\.php$ - [L] 仍然获得404. 我补充道echo get_query_var(\'page_id\'); 在里面404.php, 本申报单0.

为什么url可以重定向,但错过了正确的页面?

1 个回复
SO网友:s_ha_dum

我假设“def/products”中的内容不是由WordPress处理的。

尝试反转索引。php和abc/产品规则,如:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^abc/products-(.+)$ def/products-$1 [R=301,L]
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>
。htaccess逐行读取和执行。在WordPress之前执行你的规则可能会有帮助。这是我通常的处理方式。

我之所以说“试试”,是因为我通常可以让它们发挥作用,但有时不是第一次

结束

相关推荐

需要将wp_reDirect放在哪里才能使其工作?

我在mysite/post\\u id/edit上有一个前端帖子编辑页面,正在尝试将非作者的用户重定向回帖子。以下是我正在使用的代码: <?php global $current_user; get_currentuserinfo(); if($post->post_author != $current_user->ID): wp_redirect( the_permalink() ); exit; ?>