我为WordPress 3.0.1设置了一个插件“主题我的登录”,这使我的用户的个人资料页面在这里:
domain.com/login-2?action=profile
而不是在这里:
domain.com/profile
所以我试图用mod_rewrite修复它:
RewriteRule ^profile /login-2?action=profile
但似乎什么也没做。我怀疑在WordPress中发生了一些奇怪的事情,但是在我进一步挖掘之前,我想问一下这里的重写规则是否正确。我做得对吗?
答案 0 :(得分:0)
默认情况下,我认为WordPress在路由请求时使用REQUEST_URI
的值。你的规则
RewriteRule ^profile /login-2?action=profile
...应正确地将/profile
重写为/login-2?action-profile
,但WordPress不会观察到此更改,因为PHP中$_SERVER[REQUEST_URI]
的值基于发送到服务器的原始请求。
通过修改默认的WordPress永久链接块,让WordPress使用PATH_INFO
,可以解决这个问题:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php/$0
还可以使用P
flag代理重写的请求,这将更新REQUEST_URI
。它带来了创建新请求的开销,所以我不确定我是否会推荐它:
RewriteRule ^profile /login-2?action=profile [P]