2010-01-17 5 views
1

Im пытается создать правило перезаписи в другой каталог, но, к сожалению, его не работает.mod_rewrite в каталог

My current rewrite отправляет все обратно в файл index.php, если первое слово в строке запроса не является администратором. Правило перезаписи для admin - это admin.php, но я действительно хочу, чтобы он перешел в /var/www/html/website.com/admin/admin.php (вместо файла в том же каталоге).

Это текущий файл .htaccess.

RewriteEngine On 
RewriteRule ^(.*\/?).*(css|images|js/)+.*$ - [L] 
RewriteRule ^\/?admin\/?(.*)$ admin.php?url=$1 [QSA,L] 

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

Если я изменить правила перезаписи для администратора, чтобы использовать другой каталог ..

RewriteRule ^\/?admin\/?(.*)$ /var/www/html/website.com/admin/admin.php?url=$1 [QSA,L] 

Это ломает сайт. Есть идеи?

Спасибо.

ответ

0

На самом деле это довольно просто, вы используете системный путь, в то время как веб-путь необходим.

Попробуйте следующую строку:

RewriteRule ^\/?admin\/?(.*)$ /subfolder/admin.php?url=$1 [QSA,L] 
+0

мой каталог сидит ниже веб-пути. Веб-путь - /var/www/html/website.com/web/, и путь, который пытается получить доступ, - это /var/www/html/website.com/admin/web/ – Bennn

+0

Ну, вы не можете. Единственный способ сделать это - создать еще один файл, доступный через Интернет, и включить в него не доступный. Как это [site.com/web/admin.php]:

+0

Спасибо за помощь. Я просто сделал символическую ссылку на каталог и добавил там mod_rewrite, и это сработало. – Bennn

0

Попробуйте эти правила:

RewriteRule ^admin($|/(.*)) admin/admin.php?url=$2 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php?url=$0 [QSA,L] 
Смежные вопросы