»

在Apache主机中禁止含中文字符的前台URL网址

    网站建设  
插件七牛百度云加速SEO爬虫服务器变量CDN建站网络安全伪静态WP Rocket网站优化HTTP标头htaccess又拍云CDNApacheweb.config浏览器腾讯云加速数据库WordPress插件windows主机重定向前端cookies

使用 Apache 主机主机的一点好处就是,可以使用中文作为 URL 网址。但是如果你的博客中都是非中文字符组成的前台网址,不想使用中文字符,那么就需要特殊设置了。

因为 Apache 执行 URL 会自动进行一次 urldecode 转换,变成了中文字符。因此正则匹配时使用 [\u4e00-\u9fa5] 或者 [^\x00-\xff] 均无效,还会出现 HTTP 500 错误。

不能以这种方式硬编码 unicode 码。

[\u4e00-\u9fa5] 在传递到 hs_compile() 时将被解释为 [\xe4\xb8\x80-\xe9\xbe\xa5],其中 \u4e00 被替换为 \xe4\xb8\x80\u9fa5 被替换为 \xe9\xbe\xa5。此模式最终将在 Hyperscan 中简化为 [\x80-\e90]

因此,我们可以使用 [\xe4\xb8\x80-\xe9\xbe\xa5] 进行正则匹配。例如在 .htaccess 文件中这样设置:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} [\xe4\xb8\x80-\xe9\xbe\xa5] [NC]
    RewriteRule ^(.*)$ - [F,L]
</IfModule>

这样就禁止了含有中文字符的 URL 地址。

时光在路上扫码阅读、分享
  • 版权声明:该文章由 时光在路上 发表,共 625字。除非特别标注来源,否则为原创。详见《版权声明》部分。
  • 转载请注明:文章标题和文章链接 - 时光在路上 - 也可直接“复制本文链接” 或 使用右边二维码分享本文 →