这是我的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而不是抛出找不到页面的错误。
如果数据库中没有最后一个关键字,如何抛出Page not Found Error。
对于解决方案,
我是否需要在songs.php文件或.htaccess文件中编码以及我需要执行哪种类型的代码?
答案 0 :(得分: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]
应该有效。新行需要标题短划线年份,其中标题只能包含小写字母和数字,年份必须是四个数字,后跟一个可选的字母和数字字符串。