2011-01-05 4 views
0

CMSにpg = 1リンクを生成するページングプラグインがあります。私はこの醜いポストフィックスなしでこのURLをリダイレクトしたいのですが、CMSがなければ最初のページも表示されるからです。だから、URLから.htacess経由で醜いpg = 1を削除するRewriteRule

私はhttp://site.ru/category/schock-crane/とrespectly http://site.ru/moyka/?type=granitに、このようなURLをリダイレクトしたい http://site.ru/category/schock-crane/?pg=1ようまたはhttp://site.ru/moyka/?type=granit&pg=1、私はURLを持っています。

私は、この.htaccessのコード

RewriteRule (.*)(&|\?)pg=1$ $1 [R=301,L] 

を試してみました、私は正規表現のトレーナーで、この正規表現のコードを試してみました - それが働きました。しかしライブサーバーでは、リダイレクトは発生しません。

AddDefaultCharset Off 
#DirectoryIndex index.php index.html 

Options +FollowSymLinks 
Options -Indexes 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    # fix /?pg=1 
    RewriteRule (.*)(&|\?)pg=1$ $1 [R=301,L] 

    # fix .palitra-tab 
    RewriteCond %{REQUEST_URI} -tab$ 
    RewriteRule (.*)/([0-9]*)/\.(.*)-tab?$ http://site.ru/redirect.php?id=$2 [R=301,L] 

    RewriteCond %{REQUEST_URI} ^/csss/.* [NC] 
    RewriteRule csss/(.*)\.css$ css.php?n=$1 [L] 

    #RewriteRule ^(.*)/csss/(.*) /test.php [L] 

    RewriteRule ^(.*)/base([0-9]+)/?$ $1?base=$2 

    #RewriteCond %{REQUEST_FILENAME} -f 
    #RewriteRule \.(gif|jpeg|jpg|png)$ /images/watermark/index.php [L] 

    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^(.+) - [PT,L] 

    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule ^(.*) index.php 

    RewriteCond %{HTTP:Authorization} !^$ 
    RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}] 
</IfModule> 
+0

は 'リモートサーバー上で有効mod_rewrite'ですしてみてくださいを殺しますか? ''条件を削除するとどうなりますか? –

+0

mod_rewriteの動作 - CMSがclean-urlを正常に使用しました –

答えて

0

あなたは、クエリ文字列を調べるためにRewriteCondを使用する必要があります:

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)pg=1(&(.*)|$) 
RewriteCond %1%4 (.*?)&?$ 
RewriteRule^%{REQUEST_URI}?%1 [R=301,L] 

RewriteCondを単に末尾&を削除することです。ここ

は全体の.htaccessファイルがあります。

+0

うまくいかなかった - URLリダイレクトは発生しません。あなたの例のセンドラインなしで試してみました - 成功もありません。あなたのサーバーでこれをテストできますか? –

+0

@the_ghost:私はそれをテストし、 '?pg = 1'、'?&pg = 1'、 '?pg = 1&'、 '?foo&pg = 1'、'?pg = 1&foo '。このルールを、内部リライトだけを行うルールの前に置くようにしてください。 – Gumbo

0

たぶん、行方不明^または/リダイレクト

# fix /?pg=1 
RewriteRule ^(.*)(&|\?)pg=1$ /$1 [R=301,L] 

または

RewriteRule ^(.*)(&|\?)pg=1$ http://%{HTTP_HOST}/$1 [R=301,L] 
+0

うまくいかなかった - URLリダイレクトは起こらない –

関連する問題