簡體   English   中英

如何防止htaccess上的無限重定向循環?

[英]How to prevent infinite redirect loop on htaccess?

我有這種情況:
/sport.html之類的所有網址/sport.html隱藏了真實的網址/archive.php?action=search&section=sport

#This is the RULE:
RewriteRule ^([a-zA-Z_]+([a-zA-Z0-9_]+)?)(-([0-9]+))?\.html$ /archive.php?action=search&section=$1 [L]

現在,我想隱藏真實的URL和所有對頁面archive.php直接訪問,但是我收到使用此規則的重定向循環錯誤:

RewriteRule ^archive\.php.*$ /404.html [F,NC,L]

您必須確保您的第一個規則與404.html不匹配。 您可以為此使用RewriteCond 有關更多信息,請參見文檔

RewriteCond %{REQUEST_URI} !^404\.html$
RewriteRule ^([a-zA-Z_]+([a-zA-Z0-9_]+)?)(-([0-9]+))?\.html$ /archive.php?action=search&section=$1 [L]

我認為您真正要尋找的不是這個:

RewriteRule ^archive\.php.*$ /404.html [F,NC,L]

顯然,這會導致循環,因為您的第一個規則是重寫為archive.php ,並且此規則將其重寫為其他內容,依此類推。

試試這個代替上面的規則:

RewriteCond %{THE_REQUEST} \ /archive\.php
RewriteRule ^ /404.html [F,L]

或者,如果您想對此感興趣:

RewriteCond %{THE_REQUEST} \ /archive\.php\?action=search&section=([^&\ ]+)
RewriteRule ^ /%1.html [R,L]

基本上,由於Apache的系統,這不可能隱藏真實文件。

但是,如果不是“ sports.html”,則可以在archive.php中測試當前URL並將其重定向到sport.html。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM