Мой.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]) - это то, что доставляет мне проблемы. Когда без комментариев, я не могу сохранить какие-либо изменения в серверная часть (например, Изменение названия магазина или названия продукта и т. Д.)
Что я делаю не так?
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 версия правильная.
Что это такое? Это правило не должно быть в вашем 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