2011-12-19 8 views
1

У меня есть .htaccess файл, который включает в себя код ниже..htaccess не работает должным образом

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L] 
RewriteRule ^imagefactory/(.*)$ imagefactory/index.php?q=$1 [QSA] 

Я хочу .htaccess файл, который отвечает ниже требованиям. , если 1) url/admin, затем перейдите в папку администратора и выберите файл .htaccess 2) url/imagefactory, затем перейдите в папку imagefactory и выберите его файл index.php 3) url/then it select root directory's index.php file

+0

У вас есть полный контроль над сервером Apache? Если да, не используйте .htaccess, а vhost и ''. – fge

+0

Просто fyi, если пользователь перейдет к url ​​/, тогда он будет по умолчанию индексироваться. [Php, html и т. Д.], Если вы используете apache (им не уверен о других веб-серверах). как и для других, вам, возможно, придется переадресовать, потому что то, что вы делаете там, означает, что оба будут действительными iirc; Поэтому я имею в виду: url/admin и url/this/is/my/admin/folder будут действительны. – DarkMantis

ответ

1

Try This

RewriteEngine on 
RewriteRule ^imagefactory/(.*)$ imagefactory/index.php?q=$1 [QSA] 
RewriteRule ^admin/.$ - [PT] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 
+0

Thanx много Shoogle. Этот код работает правильно .. – meghshah

0

Вы должны поместить последнее положение правила 1 вверх. Это правило RewriteRule ^(.*)$ index.php?q=$1 [L] будет соответствовать любому, а атрибут [L] означает, что при его совпадении не будут оцениваться другие правила. Если вы переупорядочиваете его, как показано ниже, он должен работать.

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^imagefactory/(.*)$ imagefactory/index.php?q=$1 [QSA] 
RewriteRule ^(.*)$ index.php?q=$1 
0

Файл .htaccess читается в последовательности. RewriteCond предназначены только для одного правила.

Поэтому все, что вам нужно:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^imagefactory/(.*)$ imagefactory/index.php?q=$1 [QSA, L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/admin/(.*)$ 
RewriteRule ^(.*)$ index.php?q=$1 [QSA, L] 

Второй блок поймать все так, что, если его не из каталога администратора, используйте корневой index.php по умолчанию в.

+0

дает ошибку, например: Внутренняя ошибка сервера – meghshah

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