Apache mod_rewrite:可选获取URL中的变量
所以我有一个.htaccess脚本,它接受一个带有GET变量的URL,该变量通常如下所示: domain.com/index.php?PID=test&ID=test2 并允许使用这样的URL来隐藏GET变量的名称 domain.com/test/test2/ 这是.htaccess脚本-Apache mod_rewrite:可选获取URL中的变量,apache,.htaccess,mod-rewrite,url-redirection,Apache,.htaccess,Mod Rewrite,Url Redirection,所以我有一个.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] Rewrite
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个变量,但我需要一个实例,其中不传递任何变量,例如直接向上的域调用(例如domain.com),但上面的规则在没有变量(例如domain.com/)的域后抛出额外的尾部斜杠,并导致重定向循环。。默认情况下,我尝试将用户转发到domain.com/home/(这在PHP脚本本身中处理)
任何帮助都将不胜感激。试图理解.htaccess和mod_rewrite有点麻烦…重定向是因为您设置了第一条规则。添加条件以排除仅请求服务器根目录的URL:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/?$
RewriteRule !/$ %{REQUEST_URI}/ [L,R=301]
发生重定向是因为您设置了第一条规则。添加条件以排除仅请求服务器根目录的URL:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/?$
RewriteRule !/$ %{REQUEST_URI}/ [L,R=301]