我有...
| .htaccess : (v1)
RewriteEngine on
RewriteRule ^in?$ login.php
所以,/in--真的-->/login.php
這很管用。我們都可以學習如何做到這一點:.htaccess redirect with alias url
但是,我希望它也可以反向作業......
如果有人應該進入/login.php地址欄,我希望它更改為/in.
同樣,/login.php-- rewrites-to -->/in
從這個答案到另一個問題,我想為任何事情做好準備,使用REQUEST_URI. 所以,我的.htaccess檔案以這個開頭......
| .htaccess : (v2)
RewriteEngine on
# Remove index.php, if a user adds it to the address
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} ^/(. /)?index\.php
RewriteRule (^|/)index\.php(/|$) /%1 [R=301,L]
# "in" --> login.php
RewriteRule ^in?$ login.php
這也很好用。
但是現在,我想為這兩種方式添加這個規則(我的問題)/in <--> /login.php,就像(v2)/ <--> /index.php已經如何作業一樣。.htaccess所以,我采用了設定并添加了第二條規則......
| .htaccess : (v3) — 不作業!
RewriteEngine on
# Remove index.php, if a user adds it to the address
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} ^/(. /)?index\.php
RewriteRule (^|/)index\.php(/|$) /%1 [R=301,L]
# "in" --> login.php, and also redirect back to it
RewriteCond %{REQUEST_URI} ^/(. /)?login\.php
RewriteRule (^|/)login\.php(/|$) /%1in [R=302,L]
RewriteRule ^in?$ login.php
...但是然后/in兩者/login.php都會導致無限重定向回圈。
這樣做的正確方法是什么,仍然使用REQUEST_URI,并且仍然具有重寫規則( forindex.php和 for login.php)?
這些問題沒有幫助:
- 重寫規則以隱藏檔案夾,如果沒有斜杠就無法正常作業
- 這與斜杠無關
- 允許多個 IP 通過 .htaccess 訪問 Wordpress 站點管理員
- 這與基于 IP 的訪問無關
- Htaccess URL 重定向適用于 http 并非所有 https
- 這不是關于
httpsvshttp
- 這不是關于
- 重寫規則問題:.htaccess
- 這不是關于清理
GETURL 中的陣列
- 這不是關于清理
- apache htaccess 用別名重寫
- 這不是關于重寫主機/域,從而保留路徑
- 重寫 htaccess 導致無限回圈?
- 這與
www子域重寫無關
- 這與
- .htaccess 用別名重寫頁面
- 這不是關于重寫“漂亮”的 URL,也不是關于如何在 WordPress 中使用 slug 設定
- Htaccess 別名或重寫混淆
- 這不僅僅是讓多個規則具有相同的目的地
- htaccess 重寫以包含 #!
- 我不想重寫
#!
- 我不想重寫
uj5u.com熱心網友回復:
重定向回圈的原因是RewriteCond %{ENV:REDIRECT_STATUS} ^$在洗掉index.php. 請記住,這RewriteCond僅適用于立即下一步RewriteRule。
建議的.htaccess:
RewriteEngine on
# Remove index.php, if a user adds it to the address
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} ^/(. /)?index\.php$ [NC]
RewriteRule ^ /%1 [R=301,L]
# "in" --> login.php, and also redirect back to it
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} ^/(. /)?login\.php$ [NC]
RewriteRule ^ /%1in [R=302,L]
RewriteRule ^in?$ login.php [L,NC]
它不會導致重定向回圈,因為在第一次重寫后/login.php,變數REDIRECT_STATUS將變為200然后RewriteCond %{ENV:REDIRECT_STATUS} ^$將停止重定向回圈。
uj5u.com熱心網友回復:
感謝用戶提供正確答案的幫助,我發現...
RewriteCond %{ENV:REDIRECT_STATUS} ^$
...不會.htaccess只進去一次,而是每次上線之前...
RewriteCond %{REQUEST_URI} ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/478465.html
