这是我的.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可以重定向,但错过了正确的页面?
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之前执行你的规则可能会有帮助。这是我通常的处理方式。
我之所以说“试试”,是因为我通常可以让它们发挥作用,但有时不是第一次