我正在尝试将每个请求发送www.example.com/user/到www.example.com/user.php?id=0使用它
RewriteRule ^user/$ user.php?id=0
Run Code Online (Sandbox Code Playgroud)
基本上,如果有人www.example.com/user/在没有用户ID的情况下访问,则该站点将默认为id = 0.
但是,当我输入www.example.com/user/Apache似乎只是提供user.php文件时,完全忽略了RewriteRule.对于为什么会发生这种情况的任何想法?
谢谢.
我应该提一下,只有当我在URL中使用与php文件名相同的单词时,才会发生这种情况.例如,如果我要使用
RewriteRule ^yes/$ user.php?id=0
去www.example.com/yes/试用RewriteRule就好了.所以似乎Apache查找具有该名称的文件并忽略RewriteRule.不,添加[L]标志没有帮助.
这是我的.htaccess:
RewriteEngine On
RewriteRule ^user/$ user.php?id=0
RewriteRule ^user/([0-9]+)$ user.php?id=$1
Run Code Online (Sandbox Code Playgroud)
试试这个:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/$ user.php?id=0 [L,NC,QSA]
RewriteRule ^user/([0-9]+)/?$ user.php?id=$1 [L,NC,QSA]
Run Code Online (Sandbox Code Playgroud)
[L]标志使mod_rewrite停止处理规则集.在大多数情况下,这意味着如果规则匹配,则不会处理其他规则.这对应于Perl中的最后一个命令,或C中的break命令.使用此标志指示应立即应用当前规则而不考虑其他规则.
来自:http://httpd.apache.org/docs/current/rewrite/flags.html#flag_l
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |