[英]Redirection in .htaccess with variable parameters and pass through
我在找出正確的條目放入.htaccess文件時遇到了麻煩。
我想做的是:
1)允許對某些文件類型的所有請求正常工作。 (即jpg | gif | png | css | js | ico)
這將使網頁包含的所有文件都能正常工作。
2)所有“登錄”請求都將重定向至登錄頁面,並帶有參數。 例如
/login
/Login (different case)
/login/
/login/index.py
/login/scipt/index.py
/login?id=1&attr=foobar
/login/index.py?mode=1&attr=foobar?name=Billy
/login/scipt/index.py?index=999
/login/?anotherparam=value (basically, the parameter list can vary)
所有應重定向到:
/login.py
那些具有GET參數的用戶應重定向至:
/login.py?(copied list of parameters without these brackets)
3)其他所有內容都應重定向到根目錄(即“ /”),並保留所有參數。 例如
/NotAPage.html
/NotAFolder/
/NotAFolder/NotAPage.html
/NotAPage.html?v=1&k=2
/NotAFolder/?a=2
/NotAFolder/NotAPage.html?a=99&b=55&c=99 (again, the parameter list can vary)
所有應重定向到:
/
那些具有GET參數的用戶應重定向至:
/?(copied list of parameters without these brackets)
到目前為止,我已經做到了:
#Make PY (Python) files executable outside of CGI-BIN
AddHandler cgi-script .py
Options +ExecCGI
# Turn on URL rewriting engine
RewriteEngine On
# Allow these file types to pass through untouched
RewriteCond %{REQUEST_URI} !\.(jpg|gif|png|css|js|ico)$
# Redirect all other requests to index.py
RewriteRule (.*) index.py [L,PT]
我相信,這使所有內容(后綴列表除外)都可以通過參數重定向到index.py,但是還不能滿足我的需要。
誰能指出我正確的方向?
AddHandler cgi-script .py
Options +ExecCGI
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.(jpg|gif|png|css|js|ico)$ [NC]
RewriteCond %{REQUEST_URI} !^login [NC]
RewriteRule . index.py [QSA,PT]
RewriteCond %{REQUEST_URI} !\.(jpg|gif|png|css|js|ico)$ [NC]
RewriteCond %{REQUEST_URI} ^login [NC]
RewriteRule . login.py [QSA,PT]
PT
標志暗含L
標志:為了將請求傳遞到處理的下一階段,將停止重寫。
請注意,在每個目錄的上下文中(例如<Directory>
節或.htaccess
文件中都隱含了PT
標志)。 唯一可以避免的方法是重寫為-
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.