.htaccess不使用阿拉伯字母

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.htaccess不使用阿拉伯字母相关的知识,希望对你有一定的参考价值。

我知道有很多像我这样的问题,我希望你不要对我的问题进行投票,因为我已经在没有任何解决方案的情况下挣扎了近一天,希望有人在这里帮助我。

我正在开发一个多语言网站,当用户输入阿拉伯语标题时,自动urlkey将有阿拉伯字母。

我的.htaccess文件正在重写所有英文网址没有任何问题,但是当有阿拉伯字母时,页面就破了,我得到了一个404 Not Found Page

在下面查找我的.htaccess文件内容,我希望你能帮助我

# -------------------------------------------
# | Safe URL                                |
# -------------------------------------------
Options +FollowSymLinks
Options All -Indexes
RewriteEngine On

# -------------------------------------------
RewriteRule ^home/([a-z]+)$                      index.php?lang=$1                                      [L,NC]
RewriteRule ^home                                   index.php                                               [L,NC]

{Tries Goes Here}
RewriteRule ^([a-z]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)$                              get-page-contents.php?lang=$1&key1=$2&key2=$3&%{QUERY_STRING}           [L,NC]
RewriteRule ^([a-z]+)/([a-zA-Z0-9-]+)$                                              get-page-contents.php?lang=$1&key1=$2&%{QUERY_STRING}                   [L,NC]

# -------------------------------------------
RewriteCond %{REQUEST_URI} !^/(.*)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

ErrorDocument 404 /404.html

正如你在我的.htaccess文件中看到的那样,我写了一行{Tries Goes Here},这是我尝试过以下几行的地方,每次一行并没有奏效

RewriteRule ^([a-z]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)$            get-page-contents.php?lang=$1&key1=$2&key2=$3&key3=$4&%{QUERY_STRING} [L,NC]
RewriteRule ^([a-z]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([أ-يa-zA-Z0-9٠-٩_.-]+)$    get-page-contents.php?lang=$1&key1=$2&key2=$3&key3=$4&%{QUERY_STRING} [L,NC]
RewriteRule ^([a-z]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9%-]+)$         get-page-contents.php?lang=$1&key1=$2&key2=$3&key3=$4&%{QUERY_STRING}   [L,NC]
RewriteRule ^([a-z]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9%-]+)$         get-page-contents.php?lang=$1&key1=$2&key2=$3&key3=$4&%{QUERY_STRING}   [L,NE]

Click Here为工作页面,没有URL重写:

Click Here用于不工作的页面,带有URL Rewrite:

答案

从这回答How to enable arabic slug in htaccess?

试试这条规则:

RewriteRule ^([a-z]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([^/]+)$    get-page-contents.php?lang=$1&key1=$2&key2=$3&key3=$4&%{QUERY_STRING} [L,NE]

以上是关于.htaccess不使用阿拉伯字母的主要内容,如果未能解决你的问题,请参考以下文章

apache_conf 强大的.htaccess片段,需要在最顶层使用RewriteEngine On

apache_conf 针对.htaccess的安全调整片段。

JavaScript 代码片段

48个值得掌握的JavaScript代码片段(上)

2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试

精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!(转载)