Если вы действительно хотите сделать это с mod_rewrite, тогда правило может быть:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^abc\.php$ http://www.example.com/subdir_a/admin/index.php [R=301,L]
Это приведет к 301 постоянному перенаправлению, если вы попытаетесь получить прямой доступ к abc.php
.
Это должно быть в .htaccess в папке /subdir_a/admin/
.
Если вы хотите - вы можете поместить его в файл .htaccess в корневой папке веб-сайта - затем немного измените правило перезаписи, указав путь к abc.php
:
RewriteRule ^subdir_a/admin/abc\.php$ http://www.example.com/subdir_a/admin/index.php [R=301,L]
В качестве альтернативы вы можете выдать 403 Отказ в доступе:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^abc\.php$ - [F,L]
Обычной практикой является не ретранслировать .htaccess и mod_rewrite (которые могут быть недоступны на некоторых планах общего хостинга или отключены по соображениям производительности) и использовать проверки на стороне PHP-Script:
1. Для размещения во включенном / защищенном файле (например, abc.php):
if (!defined('ENTRY_POINT_MARK')) {
header('HTTP/1.1 403 Access Denied', true, 403);
exit();
}
2. Для помещения в скрипт вызова / мастера (доступ к которому можно получить напрямую):
define('ENTRY_POINT_MARK', 'EntryPointMark');