1

一致するパターンを持つすべての 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]
4

3 に答える 3

1

問題は、$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]
于 2013-06-25T16:24:38.470 に答える
1

末尾の疑問符は、希望するものではないオプションの末尾 / に一致します。

^released/([0-9]+)/iron-man$

また

RewriteRule ^released/([0-9]+)/(.+)$ /released/1.php?id=$1+$2
于 2013-06-25T16:18:44.743 に答える
0

特定のRewriteRule外部ドメインを指定しない は、常に内部で実行されます。要求どおりにリダイレクトするには、最後に追加する[R=301]か、必要なリダイレクトの種類に応じて 302、303、または 307 を追加しますが、通常301は問題ありません。

それに加えて、あなたが書いた正規表現は拡張 URL を許可していません - 末尾の$. その後、/?パーツは無意味なので、削除することもできます。

結果の行は次のようになります。

RewriteRule ^released/([0-9]+) /released/1.php?id=$1 [L,R=301]
于 2013-06-25T16:21:00.043 に答える