首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建Apache mod重写规则以处理到子目录的所有请求

问创建Apache mod重写规则以处理到子目录的所有请求
EN

Stack Overflow用户
提问于 2012-01-16 04:04:12
回答 2查看 1.5K关注 0票数 2

我想将所有传入的请求重定向到一个子目录,但不知道如何重定向。我看起来像here,但这对我不起作用。

因此,如果有人访问www.example.com/test,我希望它重定向到:www.example.com/test/subdirectory,但URL仍然需要是www.example.com/test

我还需要参数才能工作,例如www.example.com/test/index.php?action=home必须重定向到www.example.com/test/subdirectory/index.php?action=home。

我希望有人能帮助我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-16 04:52:19

所以实际上你要求的不是重定向。

重定向意味着web服务器将发送包含该子目录的新url,然后浏览器将请求该新url,并将其显示在浏览器的url栏中。

您想要的是透明地将目录结构映射到不同的实际目录结构。这就是Apache可以使用Alias指令轻松完成的操作。Mod-rewrite也可以做到这一点,因为RewriteRules不包含[R]标签,这将意味着内部重写,而不是重定向HTTP响应。[QSA]标签还会告诉mod-rewrite在重写的url上保留当前的查询字符串参数。但是Mod-rewrite并不总是容易理解的,您的问题对于一个基本的Alias来说已经足够简单了,Apache中几乎总是包含了它(通常比mod-rewrite更常见)。

这应该没问题:

代码语言:javascript
复制
Alias /test /test/subdirectory
票数 1
EN

Stack Overflow用户

发布于 2012-01-16 04:51:54

尝试将以下内容添加到站点根目录下的.htaccess文件中。默认情况下会传递查询字符串参数。

代码语言:javascript
复制
RewriteEngine on
RewriteBase /

#if not an existing file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# rewrite to subdirectory
RewriteRule ^(.*)(/[^/]+)?$ /$1/subdirectory/$2 [L,QSA]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8872917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档