【问题标题】:Rewrite request to a sub directory将请求重写到子目录
【发布时间】:2014-02-28 11:55:40
【问题描述】:

假设xyz 的目录中有一个Web 应用程序。我正在尝试将所有请求重定向到子目录www。我当前的 .htaccess 代码是:

RewriteEngine On
RewriteRule (.*) /www/$1 [L]

但是,当我访问 http://example.com/xyz/some_url 时,请求被重定向到 http://example.com/www/some_url 而不是我想要的 http://example.com/xyz/www/some_url

更新:抱歉,我忘了提及 xyz 目录,因为在我的情况下可能会重命名。所以,这个目录不需要在重写规则中硬编码

【问题讨论】:

    标签: php apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    将此规则放在/xyz/.htaccess:

    RewriteEngine On
    RewriteBase /xyz/
    
    RewriteRule ^((?!www/).*)$ www/$1 [L,NC]
    

    【讨论】:

    • 这对我很有用。删除第二行后。 RewriteBase /xyz/
    【解决方案2】:

    如果您的 DocumentRoot 不包含 xyz 路径,那么您需要在 RewriteRule 中指定。

    例如:RewriteRule (.*) /xyx/www/$1 [L]

    【讨论】:

    • 对不起,我忘了提到 xyz 目录,因为在我的情况下可能会重命名。所以,这个目录不需要在重写规则中硬编码
    • @VarunAgw 那么我相信你需要确保它是 DocumentRoot 的一部分
    • 我没听懂你说的。 xyz 在文档根目录中,可以由用户重命名
    • 您可能需要进一步调查。例如,Wordpress 通过允许覆盖包含 Rewrites 的 .htaccess 文件来解决此问题。因此允许更改路径并相应地更新重写。
    【解决方案3】:

    我认为这应该可行或接近:

    RewriteEngine On
    RewriteBase /
    RewriteRule ^(.*)/([^/]+)$ $1/www/$2 [L]
    

    【讨论】:

    • 对不起,我忘了提到 xyz 目录,因为在我的情况下可能会重命名。所以,这个目录不需要在重写规则中硬编码
    • 我不确定你想要的逻辑是什么,你想将任何子目录中的任何内容重定向到 subdirectory/www 吗?
    • 将所有内容从 example.com/x/y/z/some_url 重定向到 example.com/xyz/www/some_url。其中 x,y,z 可以是任意数量的目录。
    • 抱歉,不在我身边工作...将http://vk.eight/a/dsad 重写为http://vk.eight/a/dsad 而不是http://vk.eight/a/www/dsad
    • 请检查您的评论,您输入了两次相同的 URL,所以不确定
    【解决方案4】:

    使用一个相对路径和两个 .htaccess 文件

    您只需要删除前导 / 即可重写相对于当前文件夹的 url:

    # /xyz/.htaccess
    RewriteEngine on
    RewriteRule    (.*) www/$1    [L]
    

    这会将/xyz/foo 重写为/xyz/www/foo

    为防止重定向循环,将.htaccess 文件添加到www 子文件夹,例如:

    # /xyz/www/.htaccess
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    

    适当调整。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      相关资源
      最近更新 更多