0

在使用维护模式系统时,我正在寻找一些指导,在 .htaccess 文件中使用,通过 mod_rewrite 并传递 a $_GET

在正常情况下,在 mod_rewrite 中传递 a$_GET对我来说非常好,但在这种情况下,我遇到了问题..

我的维护系统代码如下:

RewriteCond                 %{REMOTE_HOST} !^XX\.XXX\.XXX\.XXX

RewriteCond                 %{REQUEST_URI} !/maintenance.php$ 
RewriteCond                 %{REQUEST_URI} !^/css/.*$
RewriteCond                 %{REQUEST_URI} !^/assets/.*$ 
RewriteRule ^$              maintenance.php [R=302,L]

因此,我需要的是能够将 a$_GET与 rewriteRule 一起传递,因此当使用允许的 IP 的任何人都将站点视为正常时,我可以定义该站点正在以维护模式查看。

当然,不在允许 IP 上的人会被重定向到 maintenance.php 文件,并且无论如何都不需要此提醒,因为页面已经这样做了。

提前感谢任何可以在这个问题上帮助我的人。

编辑::

# Start the mod re-write conditions #

RewriteRule ^([^/]+)\/$                         ?cat=generic&page=$1 [L]
RewriteRule ^products\/([^/]+)\/([^/]+)\/$      ?cat=product&page=$2 [L]
RewriteRule ^theteam\/([^/]+)\/$                ?cat=staff&page=$1 [L]

这就是我处理页面上其他链接的方式,我希望这就是你需要看到的。

担。

4

1 回答 1

1
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !maintenance.php
RewriteCond %{REQUEST_URI} !(css|assets).*$
RewriteCond %{REMOTE_ADDR} !^XX\.XXX\.XXX\.XXX$
RewriteRule (.*) /maintenance.php [R=302,L]

RewriteCond %{REMOTE_ADDR} ^XX\.XXX\.XXX\.XXX$
RewriteRule (.*) $1?mode=maintenance [L,QSA]

这对我有用,首先你有否定重定向,所以任何试图在没有允许 IP 的情况下访问的人都将转到 maintenance.php。

然后你有附加的内部重定向,GETmode=maintenance将不可见但会在那里。

您可以使用$_GET['mode'].

如果您希望它以可视方式附加到查询字符串并且仅附加到 php 文件中,您可以使用:

RewriteCond %{REMOTE_ADDR} ^XX\.XXX\.XXX\.XXX$
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteCond %{QUERY_STRING} !^mode=maintenance.*$
RewriteRule (.*) $1?mode=maintenance [R,L,QSA]

更新您的子目录格式的可见规则,此规则应放在它之前,如下所示:

RewriteCond %{REMOTE_ADDR} ^XX\.XXX\.XXX\.XXX$
RewriteCond %{QUERY_STRING} !.*mode=maintenance.*$
# for visible query string uncomment the below line and comment the next rule
#RewriteRule (.*) $1?mode=maintenance [R,L,QSA]
# for invisible query string
RewriteRule (.*) $1?mode=maintenance [L,QSA]

# Start the mod re-write conditions #

RewriteRule ^([^/]+)\/$                         ?cat=generic&page=$1 [L,QSA]
RewriteRule ^products\/([^/]+)\/([^/]+)\/$      ?cat=product&page=$2 [L,QSA]
RewriteRule ^theteam\/([^/]+)\/$                ?cat=staff&page=$1 [L,QSA]
于 2013-07-15T14:10:03.233 回答