多语言自定义404 htaccess规则导致重定向循环

詹姆士

我在一个多语言网站上工作,我需要为每种语言设置自定义404页面。我在.htaccess中有以下规则无法正常工作:

RewriteCond %{REQUEST_URI} !^/(ie)(/|$) [NC]
ErrorDocument 404 http://www.domain.com/ie/404/

RewriteCond %{REQUEST_URI} !^/(se)(/|$) [NC]
ErrorDocument 404 http://www.domain.com/se/404/

RewriteCond %{REQUEST_URI} !^/(nl)(/|$) [NC]
ErrorDocument 404 http://www.domain.com/nl/404/

#last rule becomes default
RewriteCond %{REQUEST_URI} !^/(en)(/|$) [NC]
ErrorDocument 404 http://www.domain.com/uk/404/

RewriteRule ^([a-z]{2})/404(/)?$ index.php?controller=utils&method=view404&lang=$1 [L]
RewriteRule ^([a-z]{2})/404.html$ index.php?controller=utils&method=view404&lang=$1 [L]

我认为问题可能出在!在RewriteCond中,但是删除它并没有帮助。如果我访问domain.com/4t3409t0(一个不存在的页面),它将与最后一个RewriteCond匹配并重定向到domain.com/uk/404(这确实有效)。

但是,如果我尝试使用诸如domain.com/ie/wfnwio之类的URL,它将尝试重定向至domain.com/ie/404(应如此),并且会卡在重定向循环中。

如此看来,当满足最后一个RewriteCond时,重写工作正常,但对于其他任何失败。

我只需要为每种语言设置ErrorDocument URL,将不存在的内容重定向到404的功能已经存在。

感谢您的输入,

詹姆士

詹姆士

我认为我遇到的问题是RewriteCond不正确。但是我发现了一种解决方法,因为PHP将语言存储在会话变量中。

ErrorDocument 404 http://www.domain.com/404/

RewriteRule ^404(/)?$ index.php?controller=utils&method=view404 [L]
RewriteRule ^([a-z]{2})/404(/)?$ index.php?controller=utils&method=view404&lang=$1 [L]
RewriteRule ^([a-z]{2})/404.html$ index.php?controller=utils&method=view404&lang=$1 [L]

我的解决方法只是使用domain.com/404作为默认值,然后在可能的情况下通过会话设置语言,或者在没有时加载UK 404页面。

如果在查询字符串中设置了语言变量,则使用第二和第三重写规则来传递它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

htaccess规则-多语言网站

来自分类Dev

添加自定义多语言产品字段

来自分类Dev

.htaccess重写规则重定向到404页面

来自分类Dev

htaccess 301自定义重定向

来自分类Dev

自定义.htaccess移动重定向

来自分类Dev

类型定义规则,用于检测重复对象(例如,多语言字段)中缺少的属性

来自分类Dev

htaccess导致重定向循环

来自分类Dev

.htaccess不会重定向到自定义404页面

来自分类Dev

.htaccess不会重定向到自定义404页面

来自分类Dev

htaccess无法重定向到自定义404页面

来自分类Dev

apache/.htaccess:不正确的页面不会重定向到自定义 404

来自分类Dev

Joomla-使自定义HTML模块成为多语言

来自分类Dev

HTML5自定义元素是否与XML(多语言)序列化兼容?

来自分类Dev

自定义301重定向规则

来自分类Dev

多语言网站和url重定向到我选择的默认语言

来自分类Dev

重写规则导致无限重定向循环

来自分类Dev

如何为多语言网站重写.htaccess中的url

来自分类Dev

重定向到自定义404错误页面

来自分类Dev

Azure 重定向到自定义 404 页面

来自分类Dev

通过htaccess重定向自定义URL

来自分类Dev

.htaccess重定向代码将重定向到未找到的自定义404,而不是将www重定向到非www版本

来自分类Dev

django cms多语言站点:seo更友好的主页(重定向)

来自分类Dev

启用多语言模式后,登录重定向后出现Joomla问题

来自分类Dev

.htaccess删除.html导致重定向循环

来自分类Dev

.htaccess导致无限重定向循环

来自分类Dev

默认wordpress htaccess导致重定向循环

来自分类Dev

htaccess将语言部分添加到现有重定向规则中

来自分类Dev

htaccess 404-重定向

来自分类Dev

htaccess 404-重定向

Related 相关文章

热门标签

归档