我希望.htaccess为任何不符合以下网址格式标准的网址返回错误404。我怎么能在.htaccess中做到这一点?
在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模式不匹配,所以此类网址应该返回404页面而不是响应。
答案 0 :(得分: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。 / p>
请注意,在规则中,我将4个组件映射到PHP中将作为$_GET['xcityid']
等读取的内容。
答案 1 :(得分:0)
为什么不使用:ErrorDocument 404 /404page.html
http://www.yourhtmlsource.com/sitemanagement/custom404error.html