所以我有这个.htaccess脚本,它带有一个带有GET变量的URL,通常看起来像这样:
domain.com/index.php?PID=test&ID=test2
并允许使用此类URL来隐藏GET变量的名称
domain.com/test/test2 /
这是.htaccess脚本 -
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !/$ %{REQUEST_URI}/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?PID=$1&ID=$2 [L,QSA]
RewriteRule ^([^/]+)/?$ index.php?PID=$1 [L,QSA]
它可以正常工作,允许传递1或2个变量,但我需要一个传递 No 变量的实例,例如直接域调用(例如domain.com) ,但上面的规则是在没有变量的域之后抛出额外的斜杠(例如domain.com//)并导致重定向循环..默认情况下,我试图将用户转发到domain.com/home/(这在PHP脚本本身处理)
if(!isset($_GET['PID']))
{
header("Location:home");
}
非常感谢任何帮助。试图理解.htaccess和mod_rewrite有点痛苦......
答案 0 :(得分:0)
重定向是因为您设置的第一条规则而发生的。添加条件以排除仅请求服务器根目录的URL:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/?$
RewriteRule !/$ %{REQUEST_URI}/ [L,R=301]