Мой magento установлен на Ubuntu Linux под /var/www/magento. Этот вопрос выглядит как некоторые из вопросов в архивах но резко отличается. Когда я установил Magento на Ubuntu Linux я разрешил перезаписывать URL-адрес Apache mod_rewrite.
Когда я перехожу к http://localhost/magento мой сервер переписывает URL как http://localhost/magento/ и отображает страницу. Затем я нажимаю на одну из ссылок в навигационной панели, скажем, nav-bar item "foo". Тогда пурпурный принимает меня к:
http://localhost/magento/foo.html
который отображает страницу Apache "Не найден".
Мне нужно изменить URL-адрес на ----- >
http://localhost/magento/index.php/foo.html
чтобы отобразить страницу.
Как будто что-то не так в моих mod_rewrite выработках.
Спасибо,
Джон Гоше
КОНФИГУРАЦИЯ: Система → Конфигурация → (Общие → ) Веб:
Использовать веб-сервер Rewrites: YES
Базовый URL: http://localhost/magento
Если я установил "User Web Server Rewrites:" на NO, тогда ссылки с моей главной страницы работают нормально, но см. страницу http://localhost/magento/index.php/foo.html который отображает правильную страницу, но в то время как сайт работает, мне не нравится URL-адрес. я хотел бы, чтобы он был http://localhost/magento/foo.html без бита index.php, так как это также возможно быть более оптимизированным для SEO.
благодарив,
Джон Гоше
Обновление: я пробовал раскомментировать мой искусственный 127.0.1.1 IP-адрес который ubuntu поместил в /etc/hosts и разместил мой реальный IP-адрес, но не повезло. У меня все еще есть одна и та же проблема. И URL внутри мой браузер переписан на http://localhost/etc..., когда я тип 192.168.3.31, лавина или avalanche.com внутри него. Я все еще пытаюсь выяснить, как решить проблему описанных выше, поскольку это не делалось.
127.0.0.1 localhost
#127.0.1.1 avalanche
192.168.4.35 avalanche avalanche.com
Когда я перезапускаю Apache, я получаю:
# service apache2 restart
* Restarting web server apache2 apache2: Could not reliably determine the server fully qualified domain name, using 192.168.4.35 for ServerName
... waiting apache2: Could not reliably determine the server fully qualified domain name, using 192.168.4.35 for ServerName
Не знаете, как исправить исходную проблему. Я тестирую локальный сервер.
Я даже пробовал это решение, а затем перезапустил apache2, но не повезло!
Как удалить index.php из URL-адресов?
поэтому размещение:
RewriteEngine On
RewriteBase /mymagento/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
не работает, даже с RewriteBase/, он не работает.
ОК, наконец мне удалось решить пробкем. Файл /etc/apache 2/sites-enabled/000-default имеет следующее директивное множество для всех каталогов определенные в этом файле:
AllowOverride None
Например, для /var/www, который является корнем документа по умолчанию установленный на Ubuntu 12.04 LTS Linux, этот файл содержит
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
что, насколько я понимаю, означает, что файлы .htaccess, найденные в этот каталог и все его подкаталоги не будут разбираться. Чтобы устранить проблему, достаточно установить:
AllowOverride All
означает, что вы сможете переопределить директивы конфигурации сервера найденный в файле /etc/apache 2/apache2.conf(или/etc/apache2/httpd.conf, который включены в него).
Одна из причин, по которой AllowOverride имеет значение None, по умолчанию может быть он замедляет работу сервера, а другой - по соображениям безопасности. Эта директива должна быть установлена внутри тега, а последние могут переопределить первое. Другая причина, по которой это не установленным по умолчанию, заключается в том, что необходимо проанализировать .htaccess рекурсивно по всему сайту каждый раз, когда файл в пути к каталогу может замедлить работу системы и, таким образом, .htaccess в файле /etc/apache 2/httpd.conf, когда возможно, рекомендуется, так как это может привести к увеличение скорости.
Итак, место
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
#AllowOverride None
AllowOverride All
Order allow,deny
allow from all
</Directory>
внутри/etc/apache2/sites-enabled/000-default
и запустите: service apache2 restart
является решением.