Php 将请求重写到子目录

Php 将请求重写到子目录,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,假设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,因为在我的情况下,

假设
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,因为在我的情况下,它可能会被重命名。因此,此目录不需要在重写规则中硬编码

如果DocumentRoot不包含
xyz
路径,则需要在重写规则中指定


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

这应该有效或者很接近我认为:

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

将此规则放入
/xyz/.htaccess

RewriteEngine On
RewriteBase /xyz/

RewriteRule ^((?!www/).*)$ www/$1 [L,NC]
使用相对路径和两个.htaccess文件 您只需删除前导/url即可重写为相对于当前文件夹的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]

根据需要进行调整。

对不起,我忘了提到目录xyz,因为在我的情况下可能会重命名。因此,这个目录不需要在重写中硬编码rule@VarunAgw那么我相信你需要确保这是我不明白你说的话的一部分。xyz位于文档根目录中,可以由用户重命名。您可能需要进一步调查。例如,Wordpress通过允许覆盖包含重写的.htaccess文件来解决此问题。因此允许更改路径,并相应地更新重写。对不起,我忘了提到目录xyz,因为在我的情况下可能会重命名。因此,这个目录不需要在重写规则中硬编码。我不确定您希望逻辑是什么。那么,是否要将任何子目录中的任何内容重定向到子目录/www?将所有内容从重定向到。其中x,y,z可以是任意数量的目录。对不起,我这边没有工作…正在重写
http://vk.eight/a/dsad
http://vk.eight/a/dsad
而不是
http://vk.eight/a/www/dsad
请检查您的评论,您在同一个URL上放了两次,所以这对我来说不太好。在删除第二行之后<代码>重写基/xyz/