【问题标题】:.htaccess and url rewriting challenge.htaccess 和 url 重写挑战
【发布时间】:2011-11-28 20:04:19
【问题描述】:

我的问题很简单。

我的根目录中有几个文件夹:

[folder1]
[folder2]
[folder3]

我的域类似于:http://johndoe.net

我将我的网站保存在 [folder1] 中,所以基本上我通过输入 http://johndoe.net/folder1

来访问它

我的目标是这样的:

我想输入 http://johndoe.net 并得到 http://johndoe.net/folder1 的内容,但地址必须保留 http://johndoe.net

我想输入 http://johndoe.net/folder1 并查看我的网站,但我的地址必须更改为 http://johndoe.net

看起来很简单,但经过几个小时的搜索,我没有找到解决方案。

到目前为止,我唯一实现的就是通过放置以下内容从 http://johndoe.net 重定向到 http://johndoe.net/folder1我的根目录中的 .htaccess 中的代码:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^johndoe\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.johndoe\.net$
RewriteRule ^/?$ "http\:\/\/johndoe\.net\/folder1\/" [R=301,L]

当我输入 http://johndoe.net 时,我的地址栏中会出现 http://johndoe.net/folder1

但我需要保留我的地址 http://johndoe.net

谁能帮我解决这个问题?

【问题讨论】:

    标签: .htaccess url directory url-rewriting subdirectory


    【解决方案1】:

    您将使用两个 .htaccess 文件来解决这个问题。这是您放入其中的内容,以及它们的去向。

    文件#1。这进入您的基本文件夹(包含 [folder1]、[folder2] 等的文件夹)

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^((www\.)?johndoe.net)$ 
    RewriteRule ^(.*)$ /folder1/$1 [L]
    

    文件 #2。这在 [folder1] 中

    RewriteEngine Off
    

    【讨论】:

    • 谢谢福尔摩斯,你是救生员,我花了大约两个小时寻找答案!
    • 我要指出的是,您要求的一部分没有被这个答案满足:如果您转到johndoe.net/folder1,它不会重定向回johndoe.net,而不是在没有进一步操作的情况下位于子文件夹中的 .htaccess...*或*...您在该子文件夹中有一个网站,可以自行处理重定向。
    • 其实没关系,你的解决方案正是我要找的。再次感谢!
    【解决方案2】:

    试试这样的

    RewriteRule ^(.*)$ /folder1/$1 [R=301,L]
    

    【讨论】:

      【解决方案3】:
      RewriteEngine on
      RewriteCond %{HTTP_HOST} ^johndoe\.net$ [OR]
      RewriteCond %{HTTP_HOST} ^www\.johndoe\.net$
      RewriteRule ^/?$ "\/folder1\/" [L]
      

      你需要内部重写,所以将/重写为/folder1/就足够了

      【讨论】: