也就是說,我有這樣的.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