Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache mod_rewrite:可选获取URL中的变量_Apache_.htaccess_Mod Rewrite_Url Redirection - Fatal编程技术网

Apache mod_rewrite:可选获取URL中的变量

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

所以我有一个.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个变量,但我需要一个实例,其中不传递任何变量,例如直接向上的域调用(例如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]