1

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

4

2 回答 2

1

我会使用以下

RewriteRule /folder1/folder2/folder3/ /folder1/some_other_folder/folder3/  [L]
于 2013-01-30T18:00:12.793 回答
1

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

[L]标志(以及没有该[R]标志)指示 Apache 在内部重写而不重定向浏览器,并在不匹配进一步规则的情况下停止。

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

如果folder3它本身是“动态”部分的一部分,也就是说,后面的任何内容都folder2应该被默默地重写为some_other_folderfolder3则排除规则,只捕获后面的所有folder2内容$1

RewriteEngine On
RewriteRule ^folder1/folder2/(.*)$ folder1/some_other_folder/$1 [L]
于 2013-01-30T17:50:17.067 回答