2

私は周りをチェックしてきましたが、私がしようとしていることを達成するための正確な構文を見つけることができないようです.

私は現在ウェブサイトを更新していますが、Google でかなり良い位置にあるため、すべてのリンクを保持したいのですが、今回はきれいな URL を使用したいと考えています。だから、私が抱えている問題は次のとおりです。

この bases-generales (general-rules) セクションがあり、これを使用して書き換えます。

RewriteRule     ^bases-generales/   bases.php?locale=es_LA

私が抱えている問題は、現在の (古い) ファイルの名前が bases.php であるため、ユーザーが Google または他のリンクから直接 bases.php を開いたときに /bases-generales/ にリダイレクトされるようにしたいことです。

私が現在使用しているルールは次のとおりです。

RewriteRule     /bases.php    http://mysite/bases-generales/ [R=301,L]

現在、このコマンドはリダイレクトを行いますが、唯一の問題は URL が次のようになっていることです。

http://mysite/bases-generales/?locale=es_LA

もう 1 つの問題は、リダイレクト ループが発生することです。

詳細については、これは完全な htaccess です (mysite はもちろん偽物です)

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
order deny,allow

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(mysite)(:80)? [NC]
RewriteRule ^(.*) http://mysite/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mysite/$1/ [L,R=301]  

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteBase     /

RewriteRule     ^/          index.php?locale=es_LA
RewriteRule     ^bases-generales/   bases.php?locale=es_LA
RewriteRule     ^condiciones/       condiciones.php?locale=es_LA
RewriteRule     ^programa/      programa.php?locale=es_LA
RewriteRule     ^premios/       premios.php?locale=es_LA
RewriteRule     ^ganadores/     ganadores.php?locale=es_LA
RewriteRule     ^patrocinadores/    patrocinadores.php?locale=es_LA
RewriteRule     ^galeria/       galeria.php?locale=es_LA
RewriteRule     ^contacto/      contacto.php?locale=es_LA

RewriteRule     ^bases.php      http://mysite/bases-generales/ [R=301,L]
4

1 に答える 1

0

最初のリクエストに関しては、?Rewrite_mod がクエリ文字列を追加しないようにするために、新しい URL に追加する必要があるため、ディレクティブは次のようになります。

RewriteRule     ^bases.php    http://mysite/bases-generales/? [R=301,L]

L2) URL の処理を​​停止するには、書き換えルールに追加する必要があります。

RewriteRule     ^bases-generales/   bases.php?locale=es_LA [L]

htaccess は次のようになります。

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
order deny,allow

RewriteEngine on


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mysite/$1/ [L,R=301]  


RewriteBase     /

RewriteRule     ^bases.php    http://mysite/bases-generales/? [R=301,L]
RewriteRule     ^sample2.php    http://mysite/sample2/? [R=301,L]


RewriteRule     ^bases-generales/   bases.php?locale=es_LA [L]
RewriteRule     ^sample2/    sample2.php?locale=xx [L]
于 2013-04-22T23:27:37.183 に答える