无法在HTAccess中获得301重定向以访问工作(重定向或重写)

时间:2017-06-14 作者:E.Hoh

我最近更改了帖子的分类方式,并更改了永久链接以不显示类别。因此,我需要重定向旧的URL。我尝试了以下多种方法,但似乎没有任何效果:

RewriteEngine On
RewriteRule ^postname http://www.example.com/postname [R=301,L]


# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我还尝试了以下方法:

使用重定向301代替RewriteRule

  • 使用了原始的完整URL(而不是Regex“^”)
  • 我已将重定向语句移动到不同的位置,即在#BEGIN WordPress内,并将其放置在IfModule、RewriteEnging On、,等等。
  • 在#end WordPress
    • 之后,我还尝试了重写规则和在文件末尾重定向,每次更改后我都使用Chrome Incognito进行测试,以避免缓存问题。实际上,我有大约40篇帖子,我必须重定向,以避免在URL中使用它们的旧类别/子类别。我在某处读到wordpress代码将重定向/重写到索引。php,以便内部Wordpress permalinks可以工作,但我不确定这与我希望包含的重定向如何交互。

      我不确定我错过了什么。任何帮助都将不胜感激!

    1 个回复
    最合适的回答,由SO网友:WebElaine 整理而成

    rewriterule中的^表示URL必须以postname开头,就像在新结构中一样-所以第二行中的意思是“重定向http://www.example.com/postnamehttp://www.example.com/postname“。

    所以,这是在扔东西。

    如果您以前使用URL,如http://www.example.com/categoryname/postname/ 那么我建议:

    RewriteEngine On
    RewriteRule ^categoryname/(.*)$ http://www.example.com/$1 [R=301,L]
    RewriteRule ^categoryname2/(.*)$ http://www.example.com/$1 [R=301,L]
    RewriteRule ^categoryname3/(.*)$ http://www.example.com/$1 [R=301,L]
    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress
    
    只需为每个类别在自己的行中添加一个重写规则。“$”告诉服务器保存类别名称之后的所有内容(即您的文章段塞),并重定向到示例。那个特别的鼻涕虫。

    结束

    相关推荐

    在调用TEMPLATE_REDIRECT之前重写URL

    Logic<我有一个页面模板/blog 其中包含一个“公共”博客</我有一个页面模板/members 这是会员区如果用户输入URL/members/blog 我想在template_redirect 连接并加载显示“私人”博客的自定义模板Problem之前template_redirect 被称为/members/blog 被重新写入/blog 所以我无法加载私人博客页面。重写规则中没有规定要这样做。