2012-04-09 119 views
1

我使用mod_rewrite将URL的末尾转移到我的php脚本中,它将充当一个microcms。我的网址将是这个样子: mysite.com/articles/some-article-about-cssmod_rewrite只接受破折号和字母数字,否则抛出404

这将通过以下对我的PHP脚本的index.php: index.php?action=read&article=some-article-about-css

我有疑问:

  1. 我不确定如何最好的方式只接受使用mod_rewrite的字母数字w /破折号。我在互联网((?:[a-z]+)?(?:[0-9]+)?-?)+上发现了这条规则,它显然不允许双重破折号,它甚至更好,但它的漫长而令人困惑。是否有另一个(更短,更快)的规则我可以​​使用?

  2. 我想验证这个规则是否适用于我要完成的工作。我不是很好用的mod_rewrite: RewriteRule ^/articles/((?:[a-z]+)?(?:[0-9]+)?-?)+ /index.php?action=read&article=$1

  3. 我可以用什么规则,以便如果URL /文章后,/是不是一个有效的字母数字/ W破折号网址,自动抛出一个404而不是传递给我的脚本?

回答

0

重写规则^ /物品/([A-ZA-Z0-9 - ] *)/index.php?action=read &文章= $ 1 [QSA,L]

重写规则^/articles/- [R = 404]

仅适用于字母数字和破折号

1

你不需要复杂的正则表达式我相信。尝试这种

RewriteRule ^articles/([^a-zA-Z0-9-]*) /index.php?page=$1 [L] 
RewriteRule ^articles(.*) [R=404]