简单的mod_rewrite q ...解决方案也很简单?

时间:2013-01-30 17:41:21

标签: apache mod-rewrite redirect

我在这里和整个互联网上看了很多例子,但我似乎无法找到我理解的答案,或者说是准确地解决了我的问题。我想在.htaccess文件中实现一个mod_rewrite指令,该文件将文件夹重命名为另一个名称,但不会在url栏中显示该名称。

例如(用户点击指向它们的链接):

theSite.com/folder1/folder2/folder3/      

我希望他们看到(与上面相同)

theSite.com/folder1/folder2/folder3/ 

但我希望浏览器在此目录中静默运行

theSite.com/folder1/some_other_folder/folder3/ 

我是一名PHP开发人员,编写我的第一个Web应用程序。我可以配置apache,PHP,mysql并像专业人士一样使用它们。对不起,我不明白mod_rewrite的语法。尽管看了很多教程,我似乎无法掌握它,因为在我进入下一个概念之前我需要先提问。感谢您的耐心等待。

2 个答案:

答案 0 :(得分:1)

你的案子非常普遍。您只需要匹配静态字符串,再加上(.*)以匹配其后的所有内容并将其存储到$1,然后替换为some_other_folder

[L]标志(缺少[R]标志)指示Apache在不重定向浏览器的情况下在内部重写,并在此处停止而不匹配其他规则。

RewriteEngine On
RewriteRule ^folder1/folder2/folder3(.*)$ folder1/some_other_folder/folder3$1 [L]

如果folder3本身是“动态”部分的一部分,也就是说folder2之后的任何内容应该被静默重写为some_other_folder,请将folder3排除在规则之外并将folder2后面的所有内容捕获到$1

RewriteEngine On
RewriteRule ^folder1/folder2/(.*)$ folder1/some_other_folder/$1 [L]

答案 1 :(得分:1)

我会使用以下

RewriteRule /folder1/folder2/folder3/ /folder1/some_other_folder/folder3/  [L]