这个问题与我在这里看到的其他问题相似,但在尝试了很多问题之后,我找不到有效的解决方案。
问题在于,当我最初安装wordpress,作为菜鸟时,我没有将wordpress文件从wordpress文件夹中删除,因此我的所有网址都采用example.com/wordpress/some-post-name
形式。
由于主机服务速度慢得令人沮丧,本周我决定将整个网站迁移到Digital Ocean,同时修复网址以删除'wordpress'。为了确保我没有打破我构建的所有链接,我决定添加一个mod_rewrite以确保我的旧链接继续工作。经过一些研究后,我提出了一条似乎在大多数情况下都有效的规则:
RewriteRule ^wordpress(.*)$ http://example.com$1 [R=301,NC]
它似乎适用于我的所有网页和帖子,但我无法让它适用于几种情况:
example.com/wordpress/
。example.com/wordpress/?tag=kaggle
)为了使问题复杂化,我添加了R = 301标志,似乎通过缓存更改混淆了所有内容(我现在意识到我应该等到其他所有内容都已完成),所以我基本上不可能继续测试
所以,我来找你 - 有人能发现为什么指定的RewriteRule不会对给出的两个例子起作用吗?我缺少该规则的任何其他问题?
答案 0 :(得分:1)
尝试
RewriteRule ^/wordpress/(.*)$ $1 [R=302,NC,QSA,L]
我已经使用各种网址对其进行了测试,但它确实有效。
此规则指示重写引擎省略' / wordpress /'来自所有传入链接无条件。如果您想在特定条件下进行,请参阅http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond。
301有助于将所有客户端永久重定向到新网址。请参阅https://www.hochmanconsultants.com/301-vs-302-redirect/
QSA有助于保留查询字符串。请参阅https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa
L停止处理进一步的重写规则(如果存在)。请参阅https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_l