2012-04-22 184 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']等讀取