.htaccess - htaccess 重定向规则,主文件夹和子文件夹重定向

标签 .htaccess redirect directory

故事:我正在开发一个网站,该网站在主目录中有三个子文件夹:/a/、/b/和/c/。 site.com、site.com/a/、site.com/b/和site.com/c/中的内容不同;然而,代码和文件是完全相似的。为了减少代码量,我使用了以下.htaccess规则,并删除了/a/、/b/和/c/子文件夹中的类似代码:

RewriteRule ^(a|b|c)/(.*) $2?folder=$1 [L,QSA]

一切正常,但以下是唯一的问题。 问题:我在所有四个页面的菜单栏中都有一个搜索按钮(即 site.comsite.com/a/site.com/b/site.com/c/)。当我在子文件夹页面(即 site.com/a/site.com/b/site.com)中搜索类似“hello world”的句子时/c/),结果以如下格式返回: site.com/hello-world/?folder=a site.com/hello-world/?folder=b site.com/hello-world/?folder=c 但是,以上搜索结果必须以以下格式返回: site.com/a/hello-world/ site.com/b/hello-world/ site.com/c/hello-world/ 是否有任何 .htaccess 规则可以解决此问题?

最佳答案

您可以使用此规则进行 301 重定向 site.com/hello-world/?folder=c => site.com/a/hello-world/

RewriteCond %{THE_REQUEST} \s/+([^?]+)\?folder=([^\s&]+) [NC]
RewriteRule ^ /%2/%1? [R=301,L,NE]

只需确保将其放置在现有规则之前

关于.htaccess - htaccess 重定向规则,主文件夹和子文件夹重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22134581/

相关文章:

linux - 挣扎于 .htaccess(Godaddy Linux 主机)

path - 如何找到我正在执行的 tcsh shell 脚本的位置?

java - 如何在 Java 中获取 URL 对象内路径的父级?

image - Grails应用程序镜像路径?

python - 如何在 Python 中跟踪元刷新

php - WordPress 更改永久链接 404 消息 - 301 重定向

php - 保持 URL 相同,加载 index.php

php - Laravel 应用程序未在 xampp 或实时服务器上运行,但在 php artisan 服务上运行良好

php - 使用 htaccess 生成 seo 友好的 url

php - 如何通过php调用api并从中获取json文件