在使用维护模式系统时,我正在寻找一些指导,在.htaccess文件中使用,通过mod_rewrite并传递$_GET
。
在正常情况下,在mod_rewrite中传递$_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]
所以我需要的是能够传递$_GET
以及rewriteRule,因此当任何人使用允许的IP查看网站时,我可以定义在维护模式下查看网站
当然,不在允许的IP上的人会被重定向到maintenance.php文件,无论如何都不需要这个提醒,因为页面已经这样做了。
提前感谢任何可以帮助我解决此问题的人。
EDIT ::
# 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]
这就是我如何处理我页面上的其他链接,我希望你能看到所有这些链接。
丹。
答案 0 :(得分: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。
然后你有附加内部重定向,GET mode=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]