htaccess用" fake"重写麻烦夹

时间:2017-06-02 13:50:21

标签: .htaccess mod-rewrite joomla

在我提出问题之前,让我首先说我有一个有效的htaccess规则:

#1.
RewriteCond %{THE_REQUEST} ^GET\ /folder1/
RewriteRule ^folder1/(.*) /good/$1 [L,R=301]

并且,就像我说的,这很有效。

但是,当我尝试这样做时:

#2.
RewriteCond %{THE_REQUEST} ^GET\ /folder1/
RewriteRule ^folder1/(.*) /funfolder/good/$1 [L,R=301]

这不再适用了。

所以这是我的问题。

如果我想重写以下内容:

#3. 
http://www.mydomain/funfolder/folder2/sheet to
http://www.mydomain/funfolder/fakefolder3/sheet

我写的时候:

#4.
RewriteRule ^funfolder/folder2/sheet$ /funfolder/fakefolder3/sheet?&%{QUERY_STRING}

#5.
RewriteCond %{THE_REQUEST} ^GET\ /funfolder/folder2/
RewriteRule ^funfolder/folder2/(.*) /funfolder/fakefolder3/$1 [L,R=301]

它不起作用。我没有看到我想看到的内容。

如果我

#6.
Redirect 301 /funfolder/folder2  http://www.mydomain/funfolder/fakefolder3

重定向有效,但不是内容。

我不知道它是否有帮助,但funfolder不是一个真正的文件夹。既不是folder2也不是fakefolder3。但是,CMS(joomla)会生成folder2和funfolder。但我想添加fakefolder3。

我还要移动上述规则的顺序,因为还有其他重写规则。但是,它没有产生任何差异。

我不明白的是,为什么#1有效,#2没有。我想如果我能理解其中的原因,它也可能会给我如何做到#3的答案。用#4改变或改变#5

然后我可以随时添加#6。

这有什么意义吗?任何人都知道为什么我不能让#2工作(因此,我的真正问题),如何让#3工作到#4或#5?

2 个答案:

答案 0 :(得分:1)

使用RedirectMatch的力量!所以你的重定向将是:

RedirectMatch 301 /funfolder/folder2/(.*) /funfolder/fakefolder3/$1

答案 1 :(得分:0)

我对我的问题有一部分答案,虽然这不完全是我的意图。我想用htaccess回答,我没有找到,但我在CMS中找到了一个解决方案。

我创建了一个指向工作链接的隐形菜单,然后我使用了新的隐形菜单项并在其上指向了一个新的可见菜单项。这有我想要/需要的结果。新的可见链接(别名)是为了满足需要而制作的。

我仍在寻找纯粹htaccess的解决方案.....但直到找到它,至少我有一些有效的方法。