2009-09-07 2 views
0

У меня есть приложение, которое больше всего находится в разработке, поэтому мне нужно блокировать доступ на всех страницах, но только не из двух.Проблемы с правилом перезаписи

Предположим, у меня есть a.php, все запросы будут перенаправлены сюда, кроме b.php.

Так я думаю, что должно быть 3 правила:

1st: when a.php and b.php are requested they should be visible to user, 

2nd: if anything other than those two is requested, 
    it should be redirected to a.php. 

3rd: for external css,javascript and image files 
    there should be an access rule 

Поскольку я не имею большого опыта работы с администрацией сервера, я считаю, что я полностью потерял :)

Это то, что я пробовал:

+0

+1 для обоих ответов я выбрал ответ Гумбо, потому что я понял правила лучше, спасибо за оба ответа .. – Sinan

ответ

2

На практике вы бы поменять местами второе и третье правило в качестве второго правила будет маршрут по умолчанию:

# 1st 
RewriteRule ^(a\.php|b\.php)$ - [L] 

# 3rd 
RewriteRule \.(js|ico|txt|gif|jpg|png|css)$ - [L] 

# 2nd 
RewriteRule !^a\.php$ a.php [L] 

- подстановки означает, что URI не меняется.

+0

Выглядит хорошо для меня. Не забудьте «RewriteEngine on». Кроме того, будет определен контекст, в котором эти правила определены (Config root, .htaccess). – zedoo

2

Я не уверен, что вы имеете в виду о # 3, но смотрите, что вы пытаетесь, я думаю, вы имеете в виду, что все js, ico, ... должны быть перенаправлены на a.php. Это правильно?

Если это так, то a => a.php (с параметром), b => b.php (с параметром) и другим => a.php. Так что попробуйте это:

RewriteBase/
RewriteRule ^a\.php(.*) /a.php$1 
RewriteRule ^b\.php(.*) /b.php$1 
RewriteRule ^.*   /a.php 

Но если вы означает, что все эти скрипты и медиа-файлы должны быть доступны, как правило, попробуйте следующее:

RewriteBase/
RewriteRule ^a\.php(.*)       /a.php$1 
RewriteRule ^b\.php(.*)       /b.php$1 
RewriteRule ^(.*)\.(js|ico|txt|gif|jpg|png|css)$ /$1.$2 

В принципе, правило перезаписи является регулярное выражение и $ 1, $ 2, ... представляют собой строку с совпадающими строками (те, которые завернуты в "(" и ")").

Надеюсь, что эта помощь.

Смежные вопросы