【问题标题】:Redirect subirectories without affecting the main directory重定向子目录而不影响主目录
【发布时间】:2016-02-24 06:08:42
【问题描述】:

在更新 WordPress 中的内容时,我发现生成 slug 的插件不能使用已被另一个页面使用的 slug,因此我不得不将 slug 更改为稍微不同的东西。我现在需要确保尝试旧网址的任何人都被重定向到新网址,而不会影响主页。

所以我有/members/ 和成员列表,您可以单击成员转到/member/[name] 我需要将/members/[name] 重定向到/member/[name][name] 可以是任何东西,所以它必须是通配符。

我已经使用了以下两个 htaccess 规则(不是同时使用),但它们总是最终重定向 /members/ 页面,这也破坏了一切。

RewriteRule ^members/(.*) http://domain.tld/member [R=301,L]

RedirectMatch 301 ^/members/.*$ http://domain.tld/member

如果/ 后面有内容,我缺少什么让它只重定向

旁注:我已经尝试找到答案,但我发现的所有结果都试图做完全相反的事情(仅重定向 /members/ 的完全匹配),我需要并且不会工作。

【问题讨论】:

    标签: apache .htaccess url-redirection mod-alias


    【解决方案1】:

    您没有使用请求的捕获部分。

    试试:

    RedirectMatch ^/members/(.+)$ /member/$1
    

    【讨论】:

    • 哦,那不好,好吧我修好了,但是 /members... 别管你的更新修好了 :)
    【解决方案2】:

    试试这个

    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    Redirect 301 /oldDir/old.php http://yourDomain/newDir/new.php
    

    【讨论】:

    • 这看起来不像我想要完成的? ^(.*)$ http://%1/$1 到底发生了什么?
    • 我不知道细节。我只知道它对我有用。
    • 哦,我想你误会了,我想重定向 /members/1 /members/2 等子目录的通配符。另外我想我理解你的 http://%1/$1 它似乎是如果我相信它不存在,请使用通配符作为“www”。
    • 这个页面解释了htaccess文件httpd.apache.org/docs/2.4/rewrite的正则表达式。您可以替换 URL 的一部分,查看此示例,其中 "%F3" 被替换为 "?"
    • 试试这个来改变目录名 RewriteCond %{THE_REQUEST} ^GET\ /oldDir/ RewriteRule ^services/(.*)$ /newDir/$1 [L]
    猜你喜欢
    • 2013-09-12
    • 2013-05-14
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多