![Apache Rewrite - 允许 php 文件类型](https://linux22.com/image/598032/Apache%20Rewrite%20-%20%E5%85%81%E8%AE%B8%20php%20%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B.png)
RewriteRule ^([^/]*)/([^/]*)$ /index.php?id=$1&n=$2 [L]
此规则将website.com/4/name
写入
/index.php?id=4&n=名称
我如何添加/更改规则以停止website.com/blog/login.php
重写调用?
回答
根据 Shane 的评论,并仔细查看正则表达式:
RewriteRule ^([^/]*)/([^/]*)$ /index.php?id=$1&n=$2 [L]
1 第一个表达式
^([^/]*)
^ = start string
( ) = group
[ ] = match
^ = not "/"
* = 0 or more of the preceding
2 斜线 /
3 重复上一个表达式 ([^/]*)
4 结束字符串 $
因此,为了防止 /blog/ 重写:在第一个表达式中匹配小写字母 [az]
最终规则
RewriteRule ^([^/a-z]*)/([^/]*)$ /index.php?id=$1&n=$2 [L]
答案1
在当前规则之前添加一条规则,以防止重写您想要保留的文件。
RewriteRule ^blog/.*\.php$ - [L]
RewriteRule ^([^/]*)/([^/]*)$ /index.php?id=$1&n=$2 [L]