2012-04-22 136 views
1

我想.htaccess返回错误404的任何url不符合以下url模式条件。我怎样才能在.htaccess中做到这一点?.htaccess - 404错误

使用PHP脚本的代码生成上面的URL

$adscatcanonurl = "$script_url" . "/" . "{$vbasedir}$xcityid-$xcitynamealt/posts/$xcatid-$catname_inurl/". ("$xsubcatid"?"$xsubcatid-". RemoveBadURLChars($xsubcatname) :""); 

样本链接

http://www.domain.com/17-Netherlands/posts/8-Real-Estate/

比方说,脚本生成这样 http://www.domain.com/17-Netherlands/posts/8/

的链接,因为它不是匹配上面的url模式,这样的url应该返回404页面没有响应。

回答

1

你不需要强制使用.htaccess来返回404,如果没有匹配,它将自行完成。所以,你可以用这样一个规则:

RewriteEngine On 
# Don't match real files 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(\d+)-([a-zA-Z-]+)/posts/(\d+)-([a-zA-Z-]+)$ your_php_script.php?xcityid=$1&xcitynamealt=$2&xcatid=$3&xcatname_inurl=$4 [L,QSA] 

,这并不是一个实际的文件(CSS,JS等),不符合上述规则将不会匹配任何规则任何请求,因此,应该返回一个404

注意,在规则中,我绘制了4种成分是什么,在您的PHP作为$_GET['xcityid']等读取