Я хочу, чтобы файлы были доступны, когда они доступны, как указано в строке DirectoryIndex. Например. когда кто-то набирается на www.mywebsite.com/mydir/, он будет перенаправлять правильно. Для этого у меня в .htaccess строку:В .htaccess для приоритета DirectoryIndex в RewriteRule
DirectoryIndex index.html default.php
Если имя файла или каталога не существует, я хочу, чтобы это перенаправить в файл (target_handler.php), который находится в том же каталоге, что и мой .htaccess файл. Для этого я поместил несколько линий после DirectoryIndex:
RewriteEngine On
RewriteCond %{ENV:URI} ^$
RewriteRule ^(.*)$ - [ENV=URI:$1]
RewriteCond %{ENV:BASE} ^$
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$
RewriteRule^- [ENV=BASE:%2]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}target_handler.php [L,QSA]
То, что я хочу, чтобы Apache сначала проверить, есть ли index.html или default.php доступны, и только при неготовности выполнить перезапись. В настоящее время поведение кажется случайным (?), Поэтому, если кто-то набирает www.mywebsite.com/mydir/, то Apache иногда переписывает сначала, не проверяя, есть ли index.html в указанной папке.
Помощь оценили
PS: Я тестирование с помощью: XAMPP Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.15
Это не будет работать, потому что 'DirectoryIndex' не является частью' mod_rewrite' он использует 'mod_dir', вы не можете иметь его проверить то, если не использовать свои правила перезаписи. Apache не работает таким образом. DirectoryIndex делает то, что он должен. Вам необходимо использовать условия перезаписи, чтобы проверить наличие этих файлов. –
Спасибо за ваш комментарий. Каким образом я могу применить такие условия, чтобы иметь возможность проверить index.html или default.php? – user2022678
@ user2022678: Это .htaccess в корне сайта или в подкаталоге? – anubhava