我已经在.htaccess文件中编写了以下代码。
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?p=$1&id=$2 [NC,QSA,L]
RewriteRule ^([^/\.]+)/?$ index.php?p=$1 [NC,QSA,L]
我也已经在admin目录中为我的网站的管理员创建了一个控制面板。问题是,当我想从该地址进入控制面板时www.site.com/admin
,它没有显示我真正想要的。之后,URL更改为www.site.com/admin/?p=admin
。
问题是什么 ?
条件仅适用于以下规则。
即使第二条规则是现有目录或文件,也将对其进行评估。
如果您的2条规则必须同时满足这两个条件,则有2种可能性。
复制您的条件:
RewriteEngine On
Options +FollowSymLinks
# this rule is evaluated if not a directory AND not a file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?p=$1&id=$2 [NC,QSA,L]
# this rule is evaluated if not a directory AND not a file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ index.php?p=$1 [NC,QSA,L]
或者if/else
,如果是目录/文件,则不执行任何操作来模拟条件
RewriteEngine On
Options +FollowSymLinks
# if file or directory, leave (do nothing)
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
# if we reach here, means it's not a file or directory. So rules can be evaluated
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?p=$1&id=$2 [NC,QSA,L]
RewriteRule ^([^/\.]+)/?$ index.php?p=$1 [NC,QSA,L]
另外,这并不是那么重要,但是.
当您放入方括号时不必逃脱:([^/\.]+)
可以([^/.]+)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句