我在这里和整个互联网上看了很多例子,但我似乎无法找到我理解的答案,或者说是准确地解决了我的问题。我想在.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的语法。尽管看了很多教程,我似乎无法掌握它,因为在我进入下一个概念之前我需要先提问。感谢您的耐心等待。
答案 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]