也就是说,我有这样的.htaccess命令的.htaccess重定向问题
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
RewriteRule ^([^\x00-\x7F]+).*$ ?open=encyclopedia&letter=$1&term=$0 [R,B,L,QSA]
RewriteRule ^([A-Z](?:[^\x00-\x7F]+|[A-Z])?).*$ ?open=encyclopedia&letter=$1&term=$0 [R,B,L,QSA]
...而我有两个问题,它现在:
1期 - 它装载的所有速记的字母,除了A,S和O。它显示空白页面而不是实际页面。
问题2 - 当我进入http://example.com/Šandi (Astronomy)
,而不是重定向我常到http://example.com/?open=encyclopedia&letter=Š&term=Šandi+(Astronomy)
,网址是http://example.com/?open=encyclopedia&letter=%25c5%25a0&term=%25c5%25a0andi+%2528Astronomy%2529
换句话说:
•当我无论从规则中删除[R]
标志,速记URL(id est-example.com/A-O-S
)如第1期中所述。
•当我加入[R]
标志,它重定向不当,如第2期描述,并且不显示的页面。
注:这些问题包括英语和非英语字母(Š/Đ/Č/ç/Ž)。
作为@anubhava建议:
<?php print_r($_GET); ?>
与[R]
标志:
英文:阵列([开] =>百科全书[信] => V [术语] => Vodolija(Astrologija))
URL:开=百科全书& letterV &项= Vodolija(Astrologija)
非英语:阵列([开] =>百科[信] => [长期] =>Škorpija(Astrologija)?)
网址:打开=百科全书&字母=%c5 & term =%c5%a0korpija%20(Astrologija)
<?php print_r($_GET); ?>
而不[R]
标志:
英文:阵列([开] =>百科全书[信] => V [术语] => Vodolija(Astrologija))
URL:/ Vodolija(Astrologija)
非英语:阵列([开] =>百科全书[信] => S [术语] =>Škorpija(Astrologija))
URL:/Škorpija(Astrologija)
作为索引的网页:
A - 阵列([开放] =>百科全书[letter] => A [term] => A):它不显示页面,它显示空白页面。
O - Array([open] => encyclopedia [letter] => O [term] => O):它不显示页面,它显示空白页面。 S - 数组([open] => encyclopedia [letter] => S [term] => S):它不显示页面,它显示空白页面。
至于所有其他的索引页面,URL是Array([open] => encyclopedia [letter] => AnyLetter [term] => SameAnyLetter):它正确显示页面... ...我没有看到它的逻辑。
这是新代码:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
#1 RewriteRule ([A-Z](?:[^\x00-\xFF].|\w).*) ?open=encyclopedia&letter=$2 [R,B,NE,L,QSA] # it loads DZH, but not the rest
#2 RewriteRule (([\x00-\xFF].|\w).*) ?open=encyclopedia&letter=$2 [R,B,NE,L,QSA] # it loads A-O-S and it loads DJ-ZH-LJ-NJ-SH
RewriteRule ^([A-Z](?:[^\x00-\x7F]+|[A-Z])?).*$ ?open=encyclopedia&letter=$1&term=$0 [B,NE,L,QSA]
当我删除线#1,#线2是工作的罚款。当我删除第2行时,第1行工作正常。但他们不会一起工作。 第2行显示除DŽ之外的所有字母,并正确重定向。 第1行只显示字母DŽ,不会重定向,并且不会加载其余的部分。 随着线#2启用,/DŽ
网址重定向到/?open=encyclopedia&letter=D%c5
更新#6:
用下面的代码...
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
RewriteRule ((LJ).*) ?open=encyclopedia&letter=$2&term=$1 [R,NE,L,QSA]
RewriteRule ((NJ).*) ?open=encyclopedia&letter=$2&term=$1 [R,NE,L,QSA]
RewriteRule ((D\xC5\xBD).*) ?open=encyclopedia&letter=$2&term=$1 [R,NE,L,QSA]
RewriteRule (([\x00-\xFF].|\w).*) ?open=encyclopedia&letter=$2&term=$1 [R,NE,L,QSA]
...这种情况:
• INDEX页面:至于“双字母”字母,它会正确打开每个字母。至于单个字母,它会加载除A,O和S以外的所有字母。
•期限页数:考虑它不会打开一个,Ø和小号,因此它不会打开自己的网页条款。
•/Lav (Astrologija)
未重定向到/?open=encyclopedia&letter=L&term=Lav (Astrologija)
,而是重定向到/?open=encyclopedia&letter=L&term=Lav+%2528Astrologija%2529
因此无法打开正确的页面。
•它打开/Š
得当,它•它打开/Đ
妥妥重定向到/Škorpija (Astrologija)
/?open=encyclopedia&letter=Š&term=Škorpija (Astrologija)
并重定向/Đavo
正确地/?open=encyclopedia&letter=Đ&term=Đavo
•虽然它打开/U
得当,/Unuk Al Haj
重定向到/?open=encyclopedia&letter=Un&term=Unuk%20Al%20Haj
,不打开右侧页面。
•虽然它正确打开/U
,但/Ugaoni Razmak
重定向到/?open=encyclopedia&letter=Ug&term=Unuk%20Al%20Haj
,不打开正确的页面。
•虽然它正确打开/R
,但/Ribe (Astrologija)
重定向到/?open=encyclopedia&letter=Ri&term=Ribe (Astrologija)
,不打开正确的页面。
•虽然它正确打开/V
,但/Vaga (Astrologija)
重定向到/?open=encyclopedia&letter=Va&term=Vaga (Astrologija)
,没有打开正确的页面。
•虽然它打开/U
得当,/Umerenost
重定向到/?open=encyclopedia&letter=Um&term=Umerenost
,不打开右侧页面。
•虽然它打开/K
得当,/Kuće (Astrologija)
重定向到/?open=encyclopedia&letter=Ku&term=Kuće (Astrologija)
,不打开右侧页面。
您使用ASCII范围虽然似乎得到多字节UTF-8,因此在捕获的子掩码中,这些符号可能会被打破。 – Deadooshka
为什么现在你的规则中有'R'国旗?拥有'R'将完成重定向,并将您的内部URL公开给客户端。还澄清[我的这个答案](https://stackoverflow.com/a/44504653/548225)在哪些方面不适合你? – anubhava
@anubhava是的,我希望它与'R'edirect以及快捷方式一起正常工作,这就是我添加它。可悲的是,当我第一次使用你的代码时,我没有完全测试它。它显示错误,正如我在上面详细解释的。我更新了我的问题。 – De1an