是否可以使用。htaccess发送6位数字的url到脚本,但处理所有其他无效的url作为404 ?

是否可以使用.htaccess通过将所有6位URL发送到脚本来处理它们,但将其他所有无效URL作为404错误处理?

例如:

http://mywebsite.com/132483

将寄往:

http://mywebsite.com/scriptname.php?no=132483

3.

将被处理为404错误。

我目前有这个工作通过一个自定义PHP 404脚本,但它有点笨拙。在我看来。htaccess可能是一个更优雅的解决方案,但我还不知道它是否可行。

请先 登录 后评论

3 个回答

daniels
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^([0-9]{6})$ scriptname.php?no=$1 [L]
</IfModule>

以保存干净的URL

http://mywebsite.com/132483

当使用scriptname.php时,只使用[L]。使用[R=301]将重定向到你的scriptname.php?没有= xxx

你可能会发现这很有用http://www.addedbytes.com/download/mod_rewrite-cheat-sheet-v2/pdf/

请先 登录 后评论
Adam Hopkinson

在您的htaccess文件中,放入以下内容

RewriteEngine On
RewriteRule ^([0-9]{6})$ /scriptname.php?no=$1 [L]

第一行打开mod_rewrite引擎。括号()将内容放入$1 -连续()将填充$2,$3…等等。[0-9]{6}表示查找长度恰好为6个字符的字符串,其中只包含0-9个字符。

最后的[L]是最后一条规则——如果它适用,规则处理将停止。

哦,^和$标记了传入uri的开始和结束。

希望会有帮助!

请先 登录 后评论
Frank Wiles

是的,使用mod_rewrite是可能的。网上有大量好的mod_rewrite教程,快速搜索谷歌就能马上找到你的答案。

基本上,你要做的是确保你使用的正则表达式只是寻找数字,而不是其他字符,并确保长度为6。然后您将重定向到scriptname。?No =你捕获的数量。

希望这可以帮助!

请先 登录 后评论