首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.htaccess重定向出现异常

.htaccess重定向出现异常
EN

Stack Overflow用户
提问于 2012-04-12 21:26:19
回答 1查看 3.6K关注 0票数 1

在我的一个项目中,我尝试使用.htaccess进行重定向。我使用的是这样的重定向:

代码语言:javascript
复制
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]

但是,现在我想在重写规则中添加一个例外。我希望http://example.com/admin/以相同的方式重定向,只是重定向到不同的目录。所有其他流量仍应转到公共目录。所以我添加了一个重写条件,如下所示:

代码语言:javascript
复制
RewriteCond %{REQUEST_URI} !/admin/
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]

这并没有起到作用。我仍然被重定向到公用文件夹。我还尝试了这个:

代码语言:javascript
复制
RewriteRule ^admin$ admin/ [L]
RewriteRule admin(.*) admin/$1 [L]

RewriteCond %{REQUEST_URI} !/admin
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]

这只会让事情变得更糟。我现在收到一个500内部服务器错误。

我已经搜索了几个小时了,我已经厌倦了寻找示例,这些示例展示了如何为某个文件夹添加异常,但没有显示如何将此流量重定向到另一个文件夹。你能告诉我我做错了什么吗,或者我可以尝试其他方法?

EN

Stack Overflow用户

回答已采纳

发布于 2012-04-12 21:44:30

RewriteCond仅适用于其正下方的规则。换句话说,在您的示例中,它只应用于空路径规则。将RewriteCond向下移动一个档次,它会工作得更好。

代码语言:javascript
复制
RewriteRule ^$ public/ [L]

RewriteCond %{REQUEST_URI} !/admin/
RewriteRule (.*) public/$1 [L]

另外,我发现你的规则

代码语言:javascript
复制
RewriteRule admin(.*) admin/$1 [L]

有点奇怪。像/adminsomething这样的网址将被重写为/admin/something,我认为这不是您想要的。

此外,我有一种预感,你把重写和重定向搞混了。重写是使请求在内部重写并以不同方式解释的规则。重定向是一种规则,它将告诉访问者的浏览器转到不同的地址。你要选哪一个?

重定向的神奇关键字是R=301,意思是永久移动http代码301的重定向。例如,您可能想要尝试...

代码语言:javascript
复制
# This first rule is actually redundant in this case so skip it...
#RewriteRule ^$ public/ [R=301,L]
RewriteCond %{REQUEST_URI} !/admin
RewriteRule (.*) public/$1 [R=301,L]
票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10124538

复制
相关文章

相似问题

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