【发布时间】:2016-02-03 13:53:50
【问题描述】:
所以我有这个 .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 有点让人头疼……
【问题讨论】:
标签: apache .htaccess mod-rewrite url-redirection