一致するパターンを持つすべての URL を
/released/2013/iron-man
/released/2013/abc-of-death
/released/2012/saw6
リダイレクトされる
/released/1.php
名前も言えます。
このルールを .htaccess ファイルに追加していますが、機能しません
RewriteRule ^released/([0-9]+)/?$ /released/1.php?id=$1 [L]
問題は、$
2 番目のスラッシュの後にあるのに、2 番目のスラッシュの後に映画名があるなどです。一致していないため、iron-man
削除してください。$
mod_rewrite と .htaccess が有効になっていることを確認してからhttpd.conf
、このコードをディレクトリの.htaccess
下に配置します。DOCUMENT_ROOT
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(released)/([0-9]+)/ /$1/1.php?id=$2 [L,QSA,NC]
末尾の疑問符は、希望するものではないオプションの末尾 / に一致します。
^released/([0-9]+)/iron-man$
また
RewriteRule ^released/([0-9]+)/(.+)$ /released/1.php?id=$1+$2
特定のRewriteRule
外部ドメインを指定しない は、常に内部で実行されます。要求どおりにリダイレクトするには、最後に追加する[R=301]
か、必要なリダイレクトの種類に応じて 302、303、または 307 を追加しますが、通常301
は問題ありません。
それに加えて、あなたが書いた正規表現は拡張 URL を許可していません - 末尾の$
. その後、/?
パーツは無意味なので、削除することもできます。
結果の行は次のようになります。
RewriteRule ^released/([0-9]+) /released/1.php?id=$1 [L,R=301]