【问题标题】:Directory structure change using .htaccess使用 .htaccess 更改目录结构
【发布时间】:2009-11-14 19:49:09
【问题描述】:

我想将我所有的网站文件(甚至包括 index.php)移动到一个子目录中(对于 exp:“abc”)

例如 之前:

public_html
 index.php
 a.file
 directory
   an.other.file
 ...

之后:

public_html
 abc_directory
   index.php
   a.file
   directory
     an.other.file
   ...

我希望一切都像以前一样工作,但我不想进行任何重定向(可见)。

人们应该输入“http://myexmaplesite.com/directory/an.other.file/”并通过 .htaccess apache 为他们提供“http://myexmaplesite.com/abc_directory/directory/an.other.file/”但没有外部重定向(301,302 等)

如何使用 mod_rewrite 将所有请求路由到子目录?

【问题讨论】:

    标签: php apache .htaccess


    【解决方案1】:

    在您的文档根目录中尝试这个 mod_rewrite 规则:

    RewriteEngine on
    RewriteRule !^directory/ directory%{REQUEST_URI} [L]
    

    一般来说:

    RewriteEngine on
    RewriteCond $1 !^directory/
    RewriteRule ^/?(.*) directory/$1 [L]
    

    这甚至应该适用于服务器或虚拟主机配置。

    【讨论】:

    • 它对我有用,但只有在所有其他重写之后将 RewriteCondRewriteRule 放在文件底部之后。只是想我会提到它。
    【解决方案2】:

    类似

    RewriteEngine On
    RewriteBase /
    RewriteRule ^(.*)$ directory/$1 [L,QSA]
    

    【讨论】:

    • 我试过了。 (实际上我想将所有内容重定向到 ubenzer 文件夹。)我已经编写了 RewriteRule ^(.*)$ ubenzer/$1 并得到 500 Internal Server Error。
    • 你给RewriteEngine OnRewriteBase /打过电话吗?
    • 是的。我不知道,但它恢复给 500。但是,上面的解决方案奏效了。不管怎么说,还是要谢谢你。 :)
    • 解释这个行为:你有一个无限递归循环,因为directory/…也匹配^(.*)$
    猜你喜欢
    • 2016-05-02
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    相关资源
    最近更新 更多