我正在尝试将mysite/index.php?con=aaa&act=bbb&id=123
重写为`mysite / aaa / bbb / 123'
这在我的网站中完美运行,但我有一个名为manager
的目录,我想在该目录中使用相同的规则。所以我用这段代码重写了URL:
Options +FollowSymLinks
Options -Indexes
RewriteEngine on
RewriteRule ^manager/([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ manager/index.php?con=$1&act=$2&id=$3 [NC,QSA,L]
RewriteRule ^([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ index.php?con=$1&act=$2&id=$3 [NC,QSA,L]
当我尝试访问
时mysite/manager
我的地址栏显示
mysite/manager/?con=manager&act=&id=
我不知道为什么将manager
视为查询。
任何人都可以帮我修复此规则吗?
答案 0 :(得分:0)
您被重定向的原因是因为mod_dir会将对不以尾部斜杠结尾的目录的任何请求重定向到带有斜杠的同一URL。您可以通过关闭DirectorySlash
来关闭此功能,但这会使您的网站容易受到信息泄露的影响,即使您有索引文件,任何人都可以看到您目录中的所有内容。
最好只使用尾部斜杠访问目录或关闭DirectorySlash
并使用mod_rewrite处理它:
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
在RewriteEngine On
行的正下方添加。