mod_rewrite 将旧请求 url 转换为新请求 url

发布于 2024-09-09 03:13:03 字数 674 浏览 1 评论 0原文

.hello - 我需要转换旧的 url 请求以适应新的网站内容;

即“艺术咨询”曾经是“咨询”,那么我如何获取“咨询”网址并将其转换为“艺术咨询”

我的规则如果^咨询$制作^艺术咨询$并继续执行以下规则..任何

RewriteRule ^art-consultancy$ consultancy-02.php [L]
RewriteRule ^art-consultancy/$ consultancy-02.php [L]

RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)$ consultancy-02.php?section=$1 [L]
RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)/$ consultancy-02.php?section=$1 [L]
#
RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)$ article-01.php [L]
RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/$ article-01.php [L]

帮助表示赞赏!

附:尝试重定向/咨询/艺术咨询但没有任何运气。认为这个方法需要一个实际的文件?

最好的,直流

.hello - i need to transform old url requests to fit into the new sites content;

ie 'art-consultancy' used to be 'consultancy' so how can i grab 'consultancy' urls and transform them into 'art-consultancy'

MY RULE if ^consultancy$ MAKE ^art-consultancy$ and continue to the rules below...

RewriteRule ^art-consultancy$ consultancy-02.php [L]
RewriteRule ^art-consultancy/$ consultancy-02.php [L]

RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)$ consultancy-02.php?section=$1 [L]
RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)/$ consultancy-02.php?section=$1 [L]
#
RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)$ article-01.php [L]
RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/$ article-01.php [L]

any help appreciated!

ps. tried Redirect /consultancy /art-consultancy without any luck. Think this method needs an actual file?

best, Dc

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

衣神在巴黎 2024-09-16 03:13:03

你基本上只需要完全按照你所说的去做,就像你对其他规则所做的那样,所以我不确定这在多大程度上符合“答案”的资格......但是,为了完整起见,我将继续写出完整的内容:(

此外,我将您的其​​他规则压缩为单行)

# Add in this condition because consultancy-02.php matches here too
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^consultancy(.*)$ art-consultancy$1

RewriteRule ^art-consultancy/?$ consultancy-02.php [L]
RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)/?$ consultancy-02.php?section=$1 [L]
RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/?$ article-01.php [L]

如果您希望将 consultancy 转换为 在用户浏览器 URL 中添加 art-consultancy 时,您应该将第一个 RewriteRule 替换为:

RewriteRule ^consultancy(.*)$ /art-consultancy$1 [R=301,L]

我不完全确定为什么 Redirect 不起作用但你期望如此。如果您查看服务器的 error_log,它可能会告诉您,但除此之外,在不知道站点目录结构的情况下很难推测。

You basically just have to do exactly what you said you wanted to do, in a similar way that you've done with the other rules, so I'm not sure how much this qualifies in the way of an "answer"...But, for the sake of completeness, I'll go ahead and write up the full thing:

(Also, I condensed your other rules into single lines)

# Add in this condition because consultancy-02.php matches here too
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^consultancy(.*)$ art-consultancy$1

RewriteRule ^art-consultancy/?$ consultancy-02.php [L]
RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)/?$ consultancy-02.php?section=$1 [L]
RewriteRule ^art-consultancy/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/?$ article-01.php [L]

If you wanted consultancy to be transformed to art-consultancy in the user's browser URL, you should replace the first RewriteRule with this:

RewriteRule ^consultancy(.*)$ /art-consultancy$1 [R=301,L]

I'm not entirely sure why the Redirect didn't work like you expected it to though. If you look at your server's error_log it might tell you, but otherwise it's hard to speculate without knowing what your site's directory structure looks like.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文