0

ルートにインストールされたオンライン ショッピング カートがあります。次に、CMS ito ルートをインストールし、ショッピング カートをサブドメインに移動することにしました。

だから私たちは持っています

  1. domain.com
  2. shop.domain.com

私たちが達成しようとしているのは、次のような URL をリダイレクトすることです。

domain.com/product_info.php?products_id=X

に:

shop.domain.com/product_info.php?products_id=X

X の値も変更する必要がある場合。

私は読んだ(そしてこれを正しく理解していれば)それは何か関係があるだろう.%{REQUEST_FILENAME}これまでのところ.htaccess、これは .それも。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain\.co.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.co.uk$
RewriteRule ^product_info\.php\/?(.*)$ "http\:\/\/sub.domain\.co.uk\/product_info\.php\?products_id\=1$1" [R=301,L]
4

1 に答える 1

1

QSAフラグはクエリ文字列を自動的に返します。これをドメインのルート フォルダーに置きます.htaccess

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteRule ^product_info\.php$ http://shop.domain.co.uk/product_info.php [R=301,QSA,L]

サブドメインもドメインの同じルート フォルダーにある場合は、これを使用します。

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.uk$ [NC]
RewriteRule ^product_info\.php$ http://shop.domain.co.uk/product_info.php [R=301,QSA,L]

ユーザーがアクセスする場合、基本的に上記のルールのいずれかを使用します。

domain.com/product_info.php?products_id=4
domain.com/product_info.php?products_id=3
domain.com/product_info.php?products_id=2
domain.com/product_info.php?products_id=1

次の場所にリダイレクトされます。

shop.domain.com/product_info.php?products_id=4
shop.domain.com/product_info.php?products_id=3
shop.domain.com/product_info.php?products_id=2
shop.domain.com/product_info.php?products_id=1

実際に ID を変更する必要がある場合は、次のようにします。

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} products_id=([^&]+) [NC]
RewriteRule ^product_info\.php$ http://shop.domain.co.uk/product_info.php?products_id=1%1 [R=301,L]

ドメインとサブドメインが同じルート フォルダーにある場合、次のようになります。

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.uk$ [NC]
RewriteCond %{QUERY_STRING} products_id=([^&]+) [NC]
RewriteRule ^product_info\.php$ http://shop.domain.co.uk/product_info.php?products_id=1%1 [R=301,L]

%{QUERY_STRING}基本的に、クエリ文字列からデータを取得するために使用する必要があります。

したがって、上記の 2 つのルールのいずれかで、ユーザーがアクセスする場合:

domain.com/product_info.php?products_id=4
domain.com/product_info.php?products_id=3
domain.com/product_info.php?products_id=2
domain.com/product_info.php?products_id=1

次の場所にリダイレクトされます。

shop.domain.com/product_info.php?products_id=14
shop.domain.com/product_info.php?products_id=13
shop.domain.com/product_info.php?products_id=12
shop.domain.com/product_info.php?products_id=11
于 2013-09-25T14:05:31.837 に答える