有没有办法让它发挥作用?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?a=1&b=2 [L]
RewriteRule ^([^/]+)/([^/]+)$ index.php?a=$1&c=$2 [L]
网址应如下所示:
http://test.com/a/b
or
http://test.com/a/c
它只适用于第一条规则。
在我的情况下,我尝试创建个人资料页面并获取会话ID的ID或通过$ _GET [' id']。
因此,如果我访问其他人的个人资料,则网址为
index.php?page=profile&id=25
/profile/25
如果我访问我自己的个人资料,那就是
index.php?page=profile
/profile
例如,我想编辑我的个人资料
index.php?page=profile&action=edit
/profile/edit
我希望你理解我的意思并且可以帮助我。
答案 0 :(得分:0)
解决这个问题的关键是注意到你想传递的每个参数之间的差异。
.htaccess
规则可以最容易地从最具体到最一般的规则编写,因此将其翻译成规则
RewriteRule ^([^/]+)/([0-9]+)$ index.php?page=$1&id=$2 [L]
RewriteRule ^([^/]+)/([a-z0-9]+)$ index.php?page=$1&action=$2 [NC,L]
RewriteRule ^([^/]+)$ index.php?page=$1 [L]
跳过现有文件也很重要。目录,但是因为RewriteCond语句只与下一个RewriteRule匹配,所以最简单的方式是以比你正在做的方式稍微不同的方式。
RewriteEngine On
# If the file or directory exists, exit
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .? - [END]
RewriteRule ^([^/]+)/([0-9]+)$ index.php?page=$1&id=$2 [L]
RewriteRule ^([^/]+)/([a-z0-9]+)$ index.php?page=$1&action=$2 [NC,L]
RewriteRule ^([^/]+)$ index.php?page=$1 [L]