1

dyhamb.com/episode.php?episode=1現在、。として書き換える.htaccessファイルがありますdyhamb.com/1dyhamb.com/blogpost.php?bp=1として書き換える別のものも欲しいdyhamb.com/blog/1です。

エピソードの書き換え用にコードを設定しましたが、ブログの書き換えを追加しようとすると、機能しないようです。それを可能にするために、どのように以下を変更しますか?

Options -Multiviews

RewriteEngine On
RewriteBase /

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

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

RewriteRule ^(0|[1-9]\d{0,2})$ /episode.php?episode=$1 [L,QSA]
RewriteRule ^/blog$ /blogpost.php?blog=$1 [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+episode\.php\?episode=(\d+) [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+blogpost\.php\?blog=(\d+) [NC]

RewriteRule ^ %1? [R=301,L]
4

1 に答える 1

0

2つを分離し、条件のセットを複製する必要があります。条件は、直後のルールにのみ適用されます。

RewriteCond <something>
RewriteCond <something-else>
# those 2 conditions only apply to this rule:
RewriteRule <match> <target>

# This rule has no conditions
RewriteRule <match2> <target2>

したがって、htaccessを次のように表示する必要があります。

RewriteEngine On
RewriteBase /

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

# Setup conditions for internal rewrite of episode.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite for episode.php
RewriteRule ^(0|[1-9]\d{0,2})$ /episode.php?episode=$1 [L,QSA]

# Setup conditions for internal rewrite of blopost.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite for blogpost.php
RewriteRule ^blog/(.*)$ /blogpost.php?blog=$1 [L,QSA]

# External redirect for episodes
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+episode\.php\?episode=(\d+) [NC]
RewriteRule ^ /%1? [R=301,L]

# External redirect for blog
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+blogpost\.php\?blog=(\d+) [NC]
RewriteRule ^ /blog/%1? [R=301,L]

ブログのルールにいくつかの変更を加える必要があることに注意してください。これらのルールが.htaccessファイルに含まれる場合、リライトエンジンが処理する前に、先頭のスラッシュがURIから削除されるため、式^/blogをである必要があります。また、ブログの後に^blog後方参照一致を追加しました。 IDの後にアクセスして、ターゲットのクエリ文字列に(.*)挿入できます。blog=また、ブログの外部リダイレクト/blog/にはIDの前がありませんでした。

于 2012-07-16T15:50:06.217 に答える