使用可变参数重定向.htaccess并通过

时间:2012-11-02 08:32:34

标签: regex .htaccess redirect

我在输入正确的条目时无法输入我的.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)其他所有内容都应重定向到root(即'/')以保留任何参数。例如

/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,但它还没有完成我所需要的一切。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

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标志:为了将请求传递到下一个处理阶段,将停止重写。

请注意PT标记隐含在每个目录上下文中,例如<Directory>部分或.htaccess文件中。避免这种情况的唯一方法是重写为-