私は301のリダイレクトと再書き込みURLパラメータを一度に実行しようとしています。私はここでいくつかの答えに従ってきましたが、それを働かせることはできません。ここで私が試したことがあります。コメントは私がそれが望んでいることを示し、実際にはそうではありません。URLのパラメータを書き換えてクエリ文字列を削除します
RewriteEngine on
# Redirect from "/country.php?country=FR&recipe=Croissant" to "/FR/Croissant"
RewriteCond %{THE_REQUEST} ^country\.php/?country=([A-Z]{2})&recipe=(.+) [NC]
RewriteRule ^/%1/$2 [NE,L,R=301]
# Redirect from "/country.php?country=FR" to "/FR"
RewriteCond %{THE_REQUEST} ^country\.php/?country=([A-Z]{2}) [NC]
RewriteRule ^/%1 [NE,L,R=301]
# Internally map "/FR/Croissant" to "/country.php?country=FR&recipe=Croissant"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/([A-Z]{2})/(.+)/?$ country\.php/?country=$1&recipe=$2 [L]
# Internally map "/FR" to "/country.php?country=FR"
RewriteRule ^/([A-Z]{2})/?$ country\.php/?country=$1 [L]
しかし、これは機能しません。私は例のいずれかを試してみても何も起こりません:
/country.php?country=FR&recipe=Croissant
滞在/country.php?country=FR&recipe=Croissant
と/FR/Croissant
を私はローカルホスト/食品/インデックスで、ドメイン(ローカルホスト/食品/のサブディレクトリでこれを実行している404
を返します。 phpおよびlocalhost/food/country.php)、htaccessファイルはそのディレクトリlocalhost/food/
に置かれます。
私は間違っていますか?
私はこれをドメインのサブディレクトリ(localhost/food /、localhost/food/index.phpとlocalhost/food/country.php)で実行しています。 'RewriteBase/food /'を追加しましたが、うまくいきません。最初の部分はまったく動作せず、2番目の部分は部分的にしか動作しません。 '/ FR'は正しくリダイレクトされますが、スラッシュ、つまり/ FR /を追加すると、スタイルはページにロードされません。つまり、相対パスはもう働きません。 –
それは本当です。ごめんなさい。しかし、htaccessファイルはそのサブディレクトリに置かれているので、問題があるかどうかは分かりません。 –
ありがとう、これは動作します。これをベースドメイン(localhost /など)で使用する場合は、RewriteBaseと のみを削除するだけですか? –