私は最近、古いウェブサイトを更新しました。すべての古いページをそれぞれの新しいバージョンに301したいと思います。ここで.htaccess:リダイレクト301とリライタブルとの競合
が私の.htaccess
Options +FollowSymlinks -MultiViews
RewriteEngine On
#
# below are the 301 redirects
# **rules**
#
# below are the RewriteCond
# **rules**
#
# other stuff
#
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+?)/?$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ /$1 [R=301,L]
ある問題は、他の人がちょうどoldfolder/
をフォルダです、古いリンクの一部は、拡張子を持つoldfile.html
を宣言されていることです。
products
,products/category
およびproducts/category/subcategory
があります。これらのURLはRewriteCond
で生成されます。
次のルールが機能:
Redirect 301 /category/ /products/category
以下は動作し、代わりにホームページに私をリダイレクトしません。ここ
Redirect 301 /old-folder/subcategory.html /products/category/subcategory
# /products/category/subcategory is also a RewriteRule
正確なコードは、私は.htaccessの残りを無視し、これは500 Internal Error
の原因となるので、各Redirect 301
後[L]
フラグを追加しようとした.htaccess
# 301 rule
Redirect 301 /arredo-urbano/blocchi-standard.html /prodotti/arredo-urbano/001-blocchi-standard
# RewriteRule
RewriteRule ^prodotti/([^/]+)/([^/]+)/?$ prodotti.php?category=$1&subcategory=$2 [L]
でありますすべてのリダイレクトは、正規表現やワイルドカードを使用せずに手動で宣言され、すべて正しく入力されます。
すべてのリダイレクト作業を意図したとおりに行う方法はありますか?また、私が理解していないことは、[L]
フラグが内部エラーを引き起こす理由です。
は、一般的にあなたのリダイレクトルールについて
ありがとう、これは動作しているようです。私はすべてのルールを手動で変更する必要があります。ちょうど質問:これはリダイレクトと同じですか?代わりにRewriteRuleを使うことはできますか?私は古いウェブサイトが非常に良いランクを持っていて、それを失いたくないので、これは主にSEOのためにやっています。 –
はい 'R = 301 'の' RewriteRule'は 'Redirect'と同じですが、より多くの機能があります – anubhava