2017-06-04 10 views
0

Magento 1ストアに次の書き換えルールを実装する必要があります。param1またはparam2が含まれ、URIが/myfilter/ではない場合、クエリ文字列を削除する必要があります。ここでApache rewrite + Magentoが正常に動作しない

は一例です。

www.mystore.com/myfilter/ --> www.mystore.com/myfilter/ 

www.mystore.com/myfilter/?param1=1 --> www.mystore.com/myfilter/param1=1 

www.mystore.com/<something>/?param1=1 --> www.mystore.com/<something>/ 

www.mystore.com/<something>/?param2=2 --> www.mystore.com/<something>/ 

私は、.htaccessファイルに以下を追加しました:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/myfilter/? 
RewriteCond %{QUERY_STRING} param1 [OR] 
RewriteCond %{QUERY_STRING} param2 
RewriteRule (.*) /$1? [R=301,L] 

標準Magentoのは、リダイレクトする前に:

############################################ 
## always send 404 on missing files in these folders 

    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/ 

############################################ 
## never rewrite for existing files, directories and links 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 

############################################ 
## rewrite everything else to index.php 

    RewriteRule .* index.php [L] 
をしかし、それは間違った方法で動作します。 これらのURLは仕事:

www.mystore.com/myfilter/ --> www.mystore.com/myfilter/ 

www.mystore.com/myfilter/?param3=1 --> www.mystore.com/myfilter/?param3=1 

www.mystore.com/<something>/?param1=1 --> www.mystore.com/<something>/ 

www.mystore.com/<something>/?param2=2 --> www.mystore.com/<something>/ 

しかし、URIが/myfilter/param1またはparam2のいずれかが含まれている場合、それは/index.phpに私をリダイレクトされます。

www.mystore.com/myfilter/?param1=1 --> www.mystore.com/index.php 

私が何かを見逃していましたか?

+0

もサーバーの障害に質問を投稿してください。 –

+0

@ M.Garaこれは、サーバー障害に関するトピックではありません**です。 Server Faultの[How to Ask](https://serverfault.com/help/how-to-ask)を見てください。 –

+0

これはサーバーの障害ではなく、私のローカルのApacheを含む、異なるサーバーで同じ動作を見ることができます。これは、Magentoの書き換えとApacheの両方に関連するものです。 – Dmitry

答えて

0

これらのルールは私が必要なトリック製:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/(index.php/)?myfilter/ [NC] 
RewriteCond %{QUERY_STRING} param1 [OR] 
RewriteCond %{QUERY_STRING} param2 
RewriteRule (.*) /$1? [R=301,L] 

RewriteCond %{REQUEST_URI} ^/myfilter/ [NC] 
RewriteRule (.*) index.php/myfilter/ [L] 
関連する問題