首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在重定向301上获取内部服务器错误

在重定向301上获取内部服务器错误
EN

Stack Overflow用户
提问于 2021-08-10 10:05:19
回答 1查看 71关注 0票数 0

我的旧页面url看起来像这样

https://blabla.com/us/sample-data/us/

我的新网址看起来像这样

https://blabla.com/us/data/sample/us/

我把这个添加到我的htaccess中

代码语言:javascript
复制
<IfModule mod_rewrite.c>
Redirect 301 ^sample-data/us/ /data/sample/us/ [NC,L]
</IfModule>

但我得到了一个internal server error

url中的第一个us是动态的,取决于来自哪个国家的用户。第二个us是国家样本数据。这是目前10个国家的名单。可能会更多。

我试过了

RewriteRule ^sample-data/us/ /data/sample/us/ [L,R=301,NC]

但也没有运气。它也重定向

https://blabla.com/data/sample/us/错过了第一/us/

怎么才能让这个重定向工作?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-10 12:25:40

重定向301 ^sample/us/ /data/sample/us/ NC,L

但是我得到了一个内部服务器错误

因为该指令在语法上是无效的。[NC,L]参数是属于mod_rewrite RewriteRule指令的参数。Redirect是一个mod_alias指令-- Redirect指令中没有这样的“标志”参数。

RewriteRule ^sample-data/us/ /data/sample/us/ L,R=301,NC

但也没有运气。它也重定向

https://blabla.com/data/sample/us/错过了第一/us/

您似乎忽略了指令中的第一个/us/ (虚拟路径段),所以我完全不知道这是如何重定向的(除非您看到缓存的响应,或者其他什么东西正在执行重定向)?这个.htaccess文件大概在文档根目录中,您大概是在请求/us/sample-data/us/,而第一个/us/是虚拟的,所以上面的指令不可能做任何事情?

如果第一个路径段是可变的,并且您需要重定向到相同的路径段,并且假设它由两个小写的and字母组成,那么请尝试以下操作:

代码语言:javascript
复制
RewriteRule ^([a-z]{2})/sample-data/us/ /$1/data/sample/us/ [R=302,L]

但是第二个/us/呢--它也不是可变的吗?/XX/的第一和第二个实例(两个字母)是否应该相同?

先用302 (临时)重定向测试,以避免潜在的缓存问题。在测试之前,您需要清除浏览器缓存。

我已经删除了NC标志--这真的应该是不区分大小写的匹配吗?

注意,如果.htaccess文件中有现有指令,那么顺序就很重要。通常情况下,外部重定向需要靠近顶部,当然是在前面控制器之前.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68724798

复制
相关文章

相似问题

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