我正在使用 WordPress 永久链接和带参数的自定义重定向。不幸的是,自定义重定向不起作用。
我的代码:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^domain.com$
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old_folder/page\.htm$ /new_folder/page/? [L,R=301]
RewriteCond %{QUERY_STRING} (^|&)lang=de($|&)
RewriteRule ^old_folder/page\.htm$ /new_folder/page/? [L,R=301]
...
</IfModule>
代码有问题吗?
最佳答案
您应该将重定向放在 WordPress Dispatcher 之前:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^old_folder/page\.htm$ /new_folder/page/? [L,R=301]
RewriteCond %{QUERY_STRING} (^|&)lang=de($|&)
RewriteRule ^old_folder/page\.htm$ /new_folder/page/? [L,R=301]
...
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^domain.com$
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
就像 @vitozev 所说,否则调度程序将首先捕获请求并由于 [L]
标志而停止处理其他规则。
您应该避免在 # BEGIN
和 # END
注释之间编辑规则。
关于wordpress - 自定义 RewriteRule 不适用于 WordPress?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35433918/