.htaccess opencart redirect 301 - PullRequest
       10

.htaccess opencart redirect 301

4 голосов
/ 08 апреля 2011

Я просто перенес свой сайт из asp в opencart. В .htaccess я хотел бы сделать некоторое перенаправление, чтобы мой клиент мог использовать старую ссылку для доступа

внутри .htaccess

redirect 301 /contact.asp http://www.example.com/index.php?route=information/contact_us
redirect 301 /downloads.asp http://www.example.com/downloads

Для Contact Us, которые работают отлично, однако, для URL загрузок, он не работал правильно. когда я получаю доступ к http://www.example.com/downloads.asp, он перенаправляется на http://www.example.com/downloads?_route_=downloads.asp и Opencart показывает, что страница не найдена. Для http://www.example.com/downloads мы установили оптимизированный для SEO URL в бэкэнд-системе.

Мы можем получить доступ с

http://www.example.com/information/downloads

http://www.example.com/downloads

но мы не можем получить доступ по обычной ссылке

http://www.example.com/index.php?route=information/downloads

Следующие мои полные .htaccess

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini)">
Order deny,allow
Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

redirect 301 /contact.asp http://www.example.com/index.php?route=information/contact_us
redirect 301 /downloads.asp http://www.example.com/downloads

============ ДРУГОЕ ТЕСТИРОВАНИЕ ========================

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

Я запускаю .htaccess из http://localhost/example и http://example (добавлен виртуальный каталог)

Для http://localhost/example

redirect 301 /example/downloads.asp http://localhost/example/downloads/

и

Для http://example

redirect 301 /downloads.asp http://example/downloads/

Затем я попытался перенаправить ссылку на мою версию в реальном времени с localhost (http://example)

redirect 301 /downloads.asp http://www.example.com/downloads/

Доступ к http://example/downloads.asp

браузер перенаправить на меня

http://www.example.com/downloads?route=downloads.asp

ЗНАМЕНИТО

В версии LIVE я не добавил код перенаправления [ОЧЕНЬ УВЕРЕН ДЛЯ ЭТОГО]

Но в Live-версии я получаю прямой доступ с помощью ввода

http://www.example.com/downloads

Я не уверен, почему из локального редиректа 301 в живую версию выйдет

http://www.example.com/downloads?route=downloads.asp

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 03 октября 2012

Обнаружено решение: .htaccess 301, работающий с opencart v1.5.4.1

Дополнительный код, необходимый для ... (и титры этого исправления): https://github.com/opencart/opencart/pull/142 ... заменить содержимое: - каталог / контроллер / общий / seo_url.php - система / библиотека / url.php

штраф за перенаправление: RewriteRule contacto http: .... com / index.php? route= информация / контакт [R = 301, L]

Перенаправление не работает: перенаправление 301 contacto http: .... com / index.php? route = информация / контакт

Проверено.

3 голосов
/ 08 апреля 2011

Поместите это перед маршрутизатором. Также добавьте $ после .asp и ^ перед.

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini)">
Order deny,allow
Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On

redirect 301 ^contact.asp$ http://www.example.com/index.php?route=information/contact_us
redirect 301 ^downloads.asp$ http://www.example.com/downloads

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

Почему бы вам не перенаправить контакт на /information/contact_us вместо index.php?route=information/contact_us?

0 голосов
/ 20 сентября 2013

Вы можете попробовать "?" в конце URL-адреса перенаправления, если его там нет, как 2-й URL (он работал для меня):

redirect 301 /contact.asp http://www.example.com/index.php?route=information/contact_us
redirect 301 /downloads.asp http://www.example.com/downloads?
...