我正在使用mod_rewrite将URL的结尾传输到我的php脚本,这将充当一个微观问题。我的网址看起来像这样:
mysite.com/articles/some-article-about-css
这会将以下内容传递给我的PHP脚本index.php:
index.php?action=read&article=some-article-about-css
我有疑问:
我不确定如何使用mod_rewrite只接受字母数字w /破折号的最佳方法。我在互联网((?:[a-z]+)?(?:[0-9]+)?-?)+
上发现了这个规则,它显然不允许双破折号甚至更好,但它长而混乱。我可以使用另一种(更短,更快)的规则吗?
我想验证此规则对我正在尝试完成的内容有效。我对mod_rewrite不太满意:
RewriteRule ^/articles/((?:[a-z]+)?(?:[0-9]+)?-?)+ /index.php?action=read&article=$1
我可以使用什么规则,以便如果/ articles /之后的网址不是有效的字母数字/ w破折号网址,会自动抛出404而不是传递给我的脚本?
答案 0 :(得分:1)
我不相信复杂的正则表达式。试试这个
RewriteRule ^articles/([^a-zA-Z0-9-]*) /index.php?page=$1 [L]
RewriteRule ^articles(.*) [R=404]
答案 1 :(得分:1)
RewriteRule ^ / articles /([a-zA-Z0-9 - ] *)/index.php?action=read&article=$1 [QSA,L]
RewriteRule ^ / articles / - [R = 404]
仅限字母数字和破折号