4

サイトを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

お問い合わせは完全に機能しますが、ダウンロード 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

============別のテスト========================

私はローカルホストでこれについていくつかのテストを行いましたが、それは非常に興味深い結果であることがわかりました. しかし、私の問題はまだ解決していません。

http://localhost/exampleおよびhttp://example (追加された仮想ディレクトリ)から .htaccess を実行します。

http://localhost/exampleの場合

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

http://exampleの場合

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

次に、ローカルホスト (http://example) からライブ バージョンのリンクにリダイレクトしようとしました。

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

http://example/downloads.aspにアクセスします

ブラウザが私にリダイレクトします

http://www.example.com/downloads? ルート=downloads.asp

了解しました

LIVE バージョンでは、リダイレクト コードを追加しませんでした[VERY SURE FOR THIS]

でもライブ版ではエンターで直接アクセスすることになっています

http://www.example.com/downloads

ローカルホストからライブバージョンへのリダイレクト 301 が出てくる理由がわかりません

http://www.example.com/downloads? ルート=downloads.asp

何か案が?

4

3 に答える 3

4

見つかった解決策: opencart v1.5.4.1 で動作する .htaccess リダイレクト 301

追加のコードが必要です... (およびこの修正のクレジット): https://github.com/opencart/opencart/pull/142 ... 以下の内容を置き換えます: - catalog/controller/common/seo_url.php - system/ライブラリ/url.php

細かいリダイレクト: RewriteRule contacto http:....com/index.php?route=information/contact [R=301,L]

リダイレクトが機能しない: リダイレクト 301 contacto http:....com/index.php?route=information/contact

確認済み。

于 2012-10-02T22:12:55.267 に答える
3

ルーターの前に置きます。また、.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ですか?

于 2011-04-08T01:49:51.040 に答える
1

「?」を試すことができます。2番目のURLのように存在しない場合は、リダイレクトURLの最後に(私にとってはうまくいきました):

redirect 301 /contact.asp http://www.example.com/index.php?route=information/contact_us
redirect 301 /downloads.asp http://www.example.com/downloads?
于 2013-09-20T11:31:42.803 に答える