将所有页面重定向到子页面但忽略特定页面

时间:2013-11-21 11:30:15

标签: php regex apache .htaccess mod-rewrite

我需要将域的所有页面重定向到名为“emergency”的子页面。

但是忽略两个特定页面 - “紧急”页面本身和另一个名为“系统”的页面。

我目前有:

    AcceptPathInfo On

    Options -Indexes

    
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111
    RewriteCond %{REQUEST_URI} !^/(emergency|system)/?$ [NC]
    RewriteRule ^ /emergency? [L,R=301]

    RewriteCond $1 !^(index\.php|assets|robots\.txt|cgi-bin|favicon\.ico)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^/index.php
    RewriteCond $1 !.(css|js|png|jpe?g|gif|ico)$ [NC]
    RewriteRule ^(.*)$ /index.php?/$1 [L]
    

工作。

我已经看过了,但也无法解决任何问题:

任何帮助将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分:1)

^

之后有一个前导斜杠

尝试此规则:

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111
RewriteCond %{REQUEST_URI} !^/(emergency|system)/?$ [NC]
RewriteRule ^ /emergency? [L,R=301]

您已完整且已更正.htaccess

AcceptPathInfo On

Options -Indexes

RewriteEngine On
RewriteBase /

RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111
RewriteCond %{REQUEST_URI} !^/(index\.php|emergency|system)/?$ [NC]
RewriteRule ^.+$ /emergency? [L,R=301]

RewriteCond $1 !^(index\.php|assets|robots\.txt|cgi-bin|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^/index.php
RewriteCond $1 !.(css|js|png|jpe?g|gif|ico)$ [NC]
RewriteRule ^(.*)$ /index.php?/$1 [L]