微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于浏览器语言的404页面,使用mod_rewrite如何

我试图通过评估客户HTTP Accept-Language头来生成纯粹基于Apache mod_rewrite规则的语言依赖404(也是其他错误页面。 我已经设法显示正确的页面(英文认)与这个规则:

RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{HTTP:Accept-Language} ^es [NC] RewriteRule (.+) /esp/error404.PHP [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule (.+) /eng/error404.PHP [L]

我的问题是,我想保持404错误,我明白redirect不允许这种types的标志。 我在任何情况下都不是100%确定是否真的值得search引擎优化明智,因为它可能最好没有404s,但我认为这将更符合逻辑和维护日志一致等,但我根本无法如何通过apache和HTTP实现:Accept-Language。

任何意见将主要赞赏。

Wampserver图标不会完全绿色,MysqL服务不启动?

PHP的乐趣与Apache 500错误

将非www和非httpsredirect到https:// www

htaccess密码保护,但不在本地主机上

Python CGI可执行脚本下载/显示脚本代码

Restler API框架安装

Python 3.4导致Apache2服务器(Mac)上的UnicodeEncodeError,但在命令行中正常工作

安装SSH2 for PHP以在OSX 10.9.1上的Xampp Apache服务器上运行

.htaccess使用GET参数redirect

如何在一个Tomcat + Apache上部署多个Grails应用程序?

您可以使用Apache的错误处理程序来执行此操作。

应该可以像这样定义一个ErrorDocument:

ErrorDocument 404 /parseme.PHP

然后做一个语言依赖重定向请求到/parseme.PHP像这样:

RewriteCond %{REQUEST_FILENAME} ^/parseme.PHP$ RewriteCond %{HTTP:Accept-Language} ^es [NC] RewriteRule (.+) /esp/error404.PHP [L] RewriteCond %{REQUEST_FILENAME} ^/parseme.PHP$ RewriteCond %{HTTP:Accept-Language} ^eng [NC] RewriteRule (.+) /eng/error404.PHP [L]

我从来没有尝试过,但这应该给你一个404头,错误页面也是正确的语言。

Pekka先前的回答完成了这项工作。 我在这里包括完整的代码供参考,因为它不适合评论

我从来没有假设即使404文档指令可以重写。 只是为了澄清其他人…“parseme.PHP文件甚至不需要存在,因为它应该重定向到通过重写。 不知道,但它似乎工作在我的情况下,只有当指令是在虚拟主机的根而不是顶级目录。 最终的代码为我工作如下:

ErrorDocument 404 /error_404.PHP RewriteEngine on # If spanish... use spanish error page RewriteCond %{REQUEST_FILENAME} ^/error_404.PHP$ RewriteCond %{HTTP:Accept-Language} ^es [NC] RewriteRule (.+) /esp/error404.PHP [L] # If prevIoUs did not match - any language (note [L] flag on prevIoUs rule) use english RewriteCond %{REQUEST_FILENAME} ^/error_404.PHP$ RewriteRule (.+) /eng/error404.PHP [L]

你不能像你那样解释Accept-Language头域 。 这不只是一个单一的值,而是一个加权值列表。

你应该更好地使用PHP进行语言协商,因为mod_rewrite太有限了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐