重写请求到子目录(Rewrite request to a sub directory)

2019-10-19 10:48发布

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

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

但是,当我访问http://example.com/xyz/some_url的请求重定向到http://example.com/www/some_urlhttp://example.com/xyz/www/some_url这是我想要的。

更新:对不起,我忘了提及的目录XYZ在我的情况很可能会改名。 因此,这个目录并不需要在重写规则被硬编码

Answer 1:

发生在这个规则/xyz/.htaccess

RewriteEngine On
RewriteBase /xyz/

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


Answer 2:

如果您的DocumentRoot不包含xyz路径,那么你就需要在重写规则来指定。

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



Answer 3:

这应该工作或接近,我认为:

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


Answer 4:

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

你只需要删除前面的/重写相对于当前文件夹中的网址:

# /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]

酌情调整。



文章来源: Rewrite request to a sub directory