localhost направляет на www.domains.tld после добавления .htaccess в папку codeigniter

Я только начал использовать Codeigniter для разработки простого статического веб-сайта с использованием локального сервера (MAMP). Первоначально мой локальный адрес для доступа к моей домашней странице был http://localhost/index.php/home. Даже простой локальный хост будет перенаправлять на мою домашнюю страницу. Я хотел удалить «index.php» из URL-адреса, поэтому я скопировал и вставил код .htaccess, который нашел в Интернете. Код выглядел следующим образом:

<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteBase /

    ### Canonicalize codeigniter URLs

    # If your default controller is something other than
    # "welcome" you should probably change this
    RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
    RewriteRule ^(.*)/index/?$ $1 [L,R=301]

    # Removes trailing slashes (prevents SEO duplicate content issues)
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)/$ $1 [L,R=301]

    # Enforce www
    # If you have subdomains, you can add them to 
    # the list using the "|" (OR) regex operator
    #RewriteCond %{HTTP_HOST} !^(www|subdomain) [NC]
    #RewriteRule ^(.*)$ http://www.domain.tld/$1 [L,R=301]

    # Enforce NO www
    RewriteCond %{HTTP_HOST} ^www [NC]
    RewriteRule ^(.*)$ http://localhost/$1 [L,R=301]

    ###

    # Removes access to the system folder by users.
    # Additionally this will allow you to create a System.php controller,
    # previously this would not have been possible.
    # 'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php/$1 [L]

    # Checks to see if the user is attempting to access a valid file,
    # such as an image or css document, if this isn't true it sends the
    # request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

<IfModule !mod_rewrite.c>

    # Without mod_rewrite, route 404's to the front controller
    ErrorDocument 404 /index.php

</IfModule>

Первоначально я скопировал код, не изменив его вообще (что было глупо с моей стороны). Таким образом, «localhost» в приведенном выше коде изначально был «www.domains.tld». Когда я затем запустил localhost в своем браузере, он направился на www.domains.tld». Я заметил ошибку и изменил его на то, что указано выше, и localhost по-прежнему направляет на «www.domains.tld». Я удалил файл .htaccess, чтобы изменить эффект, но он все еще делает то же самое. Я также изменил свою корневую папку на localhost, но что бы я ни делал, localhost указывает на «domains.tld». Когда я набираю 127.0.0.1 в адресной строке своего браузера, он правильно ведет на мой сайт. Я часами читал о причине такого поведения, но не смог найти решение.

Любая помощь будет оценена.

Спасибо, Х.


person hrshd    schedule 08.09.2012    source источник


Ответы (1)


Очистите кеш DNS и перезапустите браузер. Некоторые браузеры кешируют перенаправления с помощью DNS, чтобы вы быстрее оказывались на том сайте, который, по их мнению, является правильным.

Это особенно раздражает Firefox, поэтому я отключаю его внутреннее кэширование DNS при каждой установке. В about:config создайте следующие две настройки целочисленного типа (ПРИМЕЧАНИЕ: вы ДОЛЖНЫ создать их, они не существуют по умолчанию):

  • network.dnsCacheEntries установлен на 0
  • network.dnsCacheExpiration установить на 0

В Chrome вам нужно будет отключить предварительную выборку DNS в настройках конфиденциальности.

Причина, по которой они это делают, заключается в том, чтобы интернет «казался» быстрее для обычных браузеров. Для разработчиков это может быть большим препятствием.

person Brendan    schedule 09.09.2012
comment
Большое спасибо ... вы спасли мой день! Я использую версию 15.0.1 Firefox на Mac и с about:config, я не нашел ни «network.dnsCacheEntries», ни «network.dnsCacheExpiration». Однако я нашел «network.dns.disablePv6», для которого было установлено значение «false», и я переключил его на «true», что, похоже, решило проблему. В Google Chrome я не смог найти ничего о параметре предварительной выборки DNS в настройках конфиденциальности, но очистка кеша и удаление файлов cookie, похоже, решили проблему (не уверен, что это была точная причина). В любом случае проблема решена, и я еще раз благодарю вас! - person hrshd; 10.09.2012
comment
Настройки не существуют по умолчанию, поэтому вам нужно их создать. Я поясню это в своем ответе. - person Brendan; 10.09.2012