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

时间:2014-03-02 22:34:59

标签: .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/)。当我搜索像#34; hello world"在子文件夹页面(即site.com/a/site.com/b/site.com/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规则来解决此问题?

2 个答案:

答案 0 :(得分:2)

您可以使用此规则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]

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

答案 1 :(得分:1)

您无法解决.htaccess中的问题。您需要修复应用程序,以便为搜索结果生成正确的URL。目前,它在生成搜索结果时使用当前页面URL,这就是您得到类似结果的原因。