0

サイトを移動したところ、古いページの一部がまだ表示されています。古いURL構造の例を次に示します。

http://mydomain.com/text_version/personal_and_people_development.php

そして、どのようにリダイレクトしたいのか:

http://mydomain.com/personal-and-people-development/

私がやりたいのは、パス/text_version//text_version一部を削除してフォルダー内の任意のページを301リダイレクトし、すべての下線をハイフンに変換し、.phpファイル拡張子を末尾のスラッシュに置き換えることです。

また、ユーザーにサブドメインの使用を許可していることにも注意してください。将来、アクセスwww.が必要になる可能性があります。https://

このようにフォルダ全体の301リダイレクトを行うことは可能ですか、それとも個々のページを指定する必要がありますか?もしそうなら、私はまたはがあまり得意ではないので、誰かが私にポインタを与えることができmod_rewriteますregex

更新:これは、他の人のコードをつなぎ合わせたために、これまで何とかまとめることができたものです。これは、サブフォルダーにある.htaccessファイルに保存されます。/text_version

Options +FollowSymlinks
RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA]

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

RewriteRule (.*)_(.*) $1-$2 [N]

ただし、これは次のように変換されます。

http://mydomain.com/text_version/personal_and_people_development.php

http://mydomain.com/personal-and-people-development.php/
4

1 に答える 1

0

多くのことをいじり、そのほとんどを理解していなかった後、私はなんとかこのソリューションをつなぎ合わせることができました:

Options +FollowSymlinks
RewriteEngine on

RewriteBase /
RewriteRule (.*)_(.*) $1-$2 [N]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ .*\.php.*$
RewriteRule ^(.*)\.php(.*)?$ /$1$2 [R=301,L]

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ ^(www.)?mydomain.com/$1/ [L,R=301]
于 2013-02-12T11:29:19.100 に答える