1

これは私のhtaccessコードです:

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine on

RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /Songs/Songs\.php\?movie=([^&\ ]+)([^\ ]*)
RewriteRule ^/Songs/%3?%4 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?Songs/(.*)$ /Songs/Songs.php?movie=$1 [L,QSA]


</IfModule>

それは完全に次のようにリダイレクトしています

から

localhost/Songs/Songs.php?movie=anymovie-2012

localhost/Songs/anymovie-2012

しかし、私が試したとき

localhost/Songs/<anytext>

たとえば。

localhost/Songs/test

次に、ページが見つからないというエラーをスローする代わりに、songs.phpも呼び出しました。

最後のキーワードがデータベースに存在しない場合にページが見つからないというエラーをスローする方法。

解決策として、

songs.phpファイルまたは.htaccessファイルでコーディングする必要がありますか?また、どのような種類のコードを実行する必要がありますか?

4

1 に答える 1

1

リダイレクトする形式について、条件をより具体的にする必要があります。例えば

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^[a-z0-9]+\-[0-9]{4}(\-[a-z0-9]+)?$
RewriteRule ^/?Songs/(.*)$ /Songs/Songs.php?movie=$1 [L,QSA]

動作するはずです。新しい行にはタイトル ダッシュの年が必要です。タイトルには小文字と数字のみを含めることができ、年は 4 つの数字で構成し、オプションで文字と数字の文字列を続ける必要があります。

于 2012-11-29T17:14:28.873 に答える