56

Вопрос по .htaccess, html – Сделать index.html по умолчанию, но разрешить посещение index.php при вводе

У меня есть следующая строка в моем файле .htaccess:

DirectoryIndex index.html index.php

Каждый раз, когда я захожу в index.php, он попадает в index.html. Можно ли разрешить и то и другое, но оставить index.html по умолчанию для пользователей, посещающих www.domain.com?

  • Error: User Rate Limit Exceeded

    от Matt Rowles
  • Error: User Rate Limit Exceeded

    от Matt Rowles
  • Error: User Rate Limit Exceeded

    от
  • Это спасатель жизни !!

    от
  • Это здорово, спасибо за обновление

    от Matt Rowles
  • Я предлагаю вам посмотреть на вашindex.php и убедитесь, что он не перенаправляет вас на/ используя некоторыеheader функция.

    от anubhava
  • Это фактически перенаправляет вас в index.html, даже если index.php существует? Там какая-то другая конфигурация мешает тогда. Может быть, правило переписывания пошло не так?

    от Corbin
  • Сделать обаindex.html а такжеindex.php существует или только один?

    от nkorth
  • Shouln 't у вас есть толькоindex.html вDirectoryIndex? Тогда это будет по умолчанию дляexample.com, Другой файл должен быть доступен по адресуexample.com/index.php.

    от bfavaretto
  • Они оба существуют. Вы хотите сказать, что мой файл .htaccess должен позволить мне посетить оба?

    от Matt Rowles
6 ответов
  • 1

    DirectoryIndex index.html index.htm default.htm index.php index.php3

    index.phtml index.php5 index.shtml mwindex.phtml

    it doesn't has any means? возможно, вам просто нужно добавить вот так!

    <IfModule dir_module>
        DirectoryIndex index.php index.html index.htm
    </IfModule>
    

    enter image description here

  • 15

    Если вы используете WordPress

    теперь есть фильтр, чтобы решить эту проблему:

    remove_filter('template_redirect', 'redirect_canonical'); 
    

    (Поместите это в свою темуfunctions.php)

    Это говорит WordPress не перенаправлятьindex.php вернуться на корневую страницу, но сидеть там, где она есть. Сюда,index.html можно назначить страницей по умолчанию в.htaccess и может работать вместеindex.php.

  • 0

    Hi,

    Ну, я попробовал методы, упомянутые выше! это работает да, но не совсем так, как я хотел. я хотелredirect the default page extension к основной области с нашими дальнейшими действиями.

    Here how I do that...

    # Accesible Index Page
    <IfModule dir_module>
     DirectoryIndex index.php index.html
     RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html|htm|php|php3|php5|shtml|phtml) [NC]
     RewriteRule ^index\.html|htm|php|php3|php5|shtml|phtml$ / [R=301,L]
    </IfModule>
    

    Приведенный выше код просто захватывает любой индекс. * И перенаправляет его в основной домен.

    Спасибо

  • 1

    Поместите эти две строки вверху вашего файла .htaccess. Он покажет .ht

    RewriteEngine on
    RewriteRule ^(.*)\.html$ $1.php%{QUERY_STRING} [L]
    

    ml в URL для ваших страниц .php.

    RewriteEngine on
    RewriteRule ^(.*)\.php$ $1.html%{QUERY_STRING} [L]
    

    Используйте это для отображения .php в URL для ваших .html страниц.

  • 5

    Я согласен с принятым ответом @ TheAlpha

    Apache читает целевые файлы DirectoryIndex слева направо, если первый файл существует, apche обслуживает его, а если нет, то следующий файл служит индексом для каталога. Так что если у вас есть следующая директива:

    DirectoryIndex file1.html file2.html
    

    Apache будет использовать /file.html в качестве индекса. Вам нужно будет изменить порядок файлов, если вы хотите установить /file2.html в качестве индекса

    DirectoryIndex file2.html file1.html
    

    Вы также можете установить индексный файл, используя RewriteRule

    RewriteEngine on
    
    RewriteRule ^$ /index.html [L]
    

    RewriteRule выше перезапишет вашу домашнюю страницу в /index.html переписывание происходит внутри, такhttp://example.com/ покажет вам содержимое файла index.html.

  • 87

    По умолчанию DirectoryIndex установлен в:

    DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml
    

    Apache будет искать каждый из перечисленных файлов по порядку и обрабатывать первый, который он найдет, когда посетитель запросит только каталог. Если веб-сервер не находит в текущем каталоге файлов, соответствующих именам в директиве DirectoryIndex, в браузере будет отображен список каталогов, в котором будут показаны все файлы в текущем каталоге.

    Заказ должен бытьDirectoryIndex index.html index.php // по умолчанию это index.html

    Reference: Вот.