Php 保存$\u GET变量时遇到问题
我想从/gallery/X重定向到gallery.php?category=X 但当我实际转到地址时,我的旧$u GET变量“category”被转换为以下形式:Php 保存$\u GET变量时遇到问题,php,regex,.htaccess,Php,Regex,.htaccess,我想从/gallery/X重定向到gallery.php?category=X 但当我实际转到地址时,我的旧$u GET变量“category”被转换为以下形式: $_GET['category'] = "X.php/X" 这就是my.htaccess的外观: RewriteBase / RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f Rewrite
$_GET['category'] = "X.php/X"
这就是my.htaccess的外观:
RewriteBase /
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^gallery/(.*)$ /gallery.php?category=$1 [L]
我的正则表达式很差,几乎没有关于.htaccess的任何东西。我一直在尝试使用这个重写规则来保留$\u GET变量,但我所做的一切似乎都不起作用。我在这里该怎么办
谢谢 移动您的规则:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^gallery/(.*)$ /gallery.php?category=$1 [L]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
另外,将QSA
添加到您的操作中,[L,QSA]
。这将在重定向期间追加查询字符串,因此它应该保留您以前的数据
说明:
您的重写需要按照特定的顺序进行,因为[L]
选项就像向服务器发出一个全新的请求。因此,当您请求gallery/X
时,它将您的请求重写为/gallery.php?category=X
。当服务器请求此页面时,它符合您的第一条规则,这意味着它被视为X.php/X
,然后作为额外的$1
返回到原始请求
听起来很困惑,但我想这就是发生的事情。谢谢,成功了!我仍然不明白更改顺序和添加QSA是如何做到这一点的,您介意解释一下请求发生了什么,以便我能更好地理解htaccess吗?添加了一个解释。我想这就是发生的事情。很高兴它成功了!