.htaccess仅适用于root,而我需要它才能跨域名工作

时间:2016-11-02 11:58:03

标签: apache .htaccess mod-rewrite

我有以下ReWrite规则

 RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteCond %{REMOTE_ADDR} !{developer_ip}
 RewriteRule .* /maintenance.php [R=302,L]

此.htaccess应将所有请求重定向到maintenance.php,但来自{developer_ip}的请求是我自己的IP地址。

问题:

以上规则有效,但当我点击任何内部链接时,它再次显示我的maintenance.php(由于IP规则,不得发生),以index.php?{some_query}或也已由.htaccess本身重写的网址,例如/Page/About-US(最初为index.php?page_id=200

现在我希望.htaccess将所有请求重定向到maintenace.php(已经在做),但没有来自{developer_ip}的请求。上述规则没有问题,除了我自己的ip地址之外的部分,它重定向我的内部链接。

1 个答案:

答案 0 :(得分:1)

对维护页面执行内部重写,并按此顺序保留规则:

RewriteEngine On

RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif)$ [NC]
RewriteCond %{REMOTE_ADDR} !{developer_ip}
RewriteRule !^maintenance\.php$ /maintenance.php [NC,L]

# skip any requests alredy rewritten to maintenance.php
RewriteRule ^maintenance\.php$ - [NC,L]

# rest of your rewrite rules