Мой.htaccess не позволяет серверной части сохранять изменения


В моем файле .htaccess есть правила, которые я использую для полного устранения index.php из всех URL-адресов в установке Magento, которые у меня есть (в настоящее время в поддомене).

    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase /

    RewriteCond %{THE_REQUEST} ^.*/index.php
    RewriteRule ^(.*)index.php$ http://my.website.com/$1 [R=301,L]
    #RewriteRule ^index.php/(.*) $1 [R=301,QSA,L]

Все работает нормально (почти). Всякий раз, когда я ввожу URL-адрес с index.php он автоматически перенаправляет на свой не index.php версия. Прокомментированная строка (перезаписать^index.php /(.*) 1 доллар [R=301,QSA,L]) - это то, что доставляет мне проблемы. Когда без комментариев, я не могу сохранить какие-либо изменения в серверная часть (например, Изменение названия магазина или названия продукта и т. Д.)

Что я делаю не так?

Author: Edgar Quintero, 2013-06-11

2 answers

Спасибо за вашу помощь. Я все понял. Чтобы вернуться назад, я считаю, что параметры в Magento удаляют index.php визуально, однако веб-сайт все еще реагирует на это, если бы я набрал www.mysite.com/index.php например, домашняя страница все равно будет загружаться. Я никогда не хочу видеть index.php в любом месте, поэтому я хотел бы перенаправить любые URL-адреса с index.php к тому, что это не index.php версия. Поэтому я пришел к следующему выводу:

RewriteRule ^(.*)(index.php/admin)($|/) - [L]
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://www.mysite.com/$1 [R=301,L]
RewriteRule ^index.php/(.*) $1 [R=301,QSA,L]

Проблема, с которой я столкнулся, заключалась в том, что я также перенаправлял index.php URL-адреса в бэкэнде, поэтому изменения не сохранялись. Первая строка выше запрещает администратору (серверной части) перенаправлять и все URL-адреса с index.php перенаправление (301) на его не index.php версия правильная.

 2
Author: Edgar Quintero, 2013-07-14 22:37:17

Что это такое? Это правило не должно быть в вашем htaccess:

RewriteRule ^(.*)index.php$ http://my.website.com/$1 [R=301,L]

Я не уверен, чего вы пытаетесь здесь добиться - похоже, что это не совсем правильно сформулировано, поскольку логично сказать:

Если вы видите файл с именем index.php, перед которым есть любое количество обязательных символов , и это все, что нужно для URI, а затем перенаправить на my.website.com и добавьте все, что было до index.php часть до конца (даже если это приведет к двойной косой черте). О, и это самое последнее правило. Игнорируй все, что происходит далее.

Я не думаю, что это то, чего ты хочешь. Я думаю, что вы пытаетесь избежать проблем с канонизацией SEO. Вместо перенаправления используйте метатег канонической ссылки в System > Config > Catalog > SEO

В будущем не изменяйте свой htaccess. Снимите новый и установите его заново отсюда:

Http://svn.magentocommerce.com/source/branches/1.7/.htaccess

После этого проверьте ваш файл httpd.conf и убедитесь, что AllowOverride имеет значение All.

Чтобы удалить index.php из вашего URI перейдите к System > Config > Web > Search Engine Optimization и измените Use Web Server Rewrites на "да".

Если это не удается сохранить (сомнительно), проверьте следующее:

  • Убедитесь, что пользователь бд, назначенный Magento, имеет доступ на запись к таблицам core_config_data и catalog*. Или все таблицы, если на то пошло.
  • Снова запустите процесс установки, удалив app/etc/local.xml
 1
Author: philwinkle, 2013-07-11 20:07:10