Php .htacces捕获页面名称并将其作为get方法发送
我正在尝试捕获一个url,如Php .htacces捕获页面名称并将其作为get方法发送,php,.htaccess,Php,.htaccess,我正在尝试捕获一个url,如 http://www.mysite.com/somepage.php?sometext=somevalue 并将其重定向到 http://www.mysite.com/index.php?page=somepage.php&sometext=somevalue 我试图在网上搜索这样的.htaccess,但找不到 你能帮帮我吗?我很确定这是一个重复的,但我在找到它/它们时遇到了一些问题[Edit:,尽管可能不是最好的例子] 无论如何,这是一个相当标准的问题
http://www.mysite.com/somepage.php?sometext=somevalue
并将其重定向到
http://www.mysite.com/index.php?page=somepage.php&sometext=somevalue
我试图在网上搜索这样的.htaccess,但找不到
你能帮帮我吗?我很确定这是一个重复的,但我在找到它/它们时遇到了一些问题[Edit:,尽管可能不是最好的例子] 无论如何,这是一个相当标准的问题,用相当标准的代码解决:
RewriteRule ^(.*)$ index.php?get=$1 [L,QSA]
RewriteRule
将整个请求捕获为$1
,并将其作为页面
GET参数传递给index.php
末尾的[QSA]
标志表示获取任何现有的GET参数(示例中为sometext=somevalue
),并将其作为新请求的附加GET参数添加。([L]
标志只是说这应该是执行的最后一条规则。)
请注意,这还将重定向对图像或CSS文件等内容的请求,因此最好在该规则之前直接添加以下行:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
这些行表示“如果请求的是实际存在的文件或目录,请不要处理该规则。”这样,对真实文件的请求将直接由Apache处理,而不是由您的PHP脚本处理(或者更可能是错误处理)。我很确定这是一个重复的请求,但我在查找它们时遇到了一些问题[编辑:,但可能不是最好的示例]
RewriteRule ^(.*).php?sometext=(.*)$ index.php?page=$1.php&sometext=$2 [QSA,L] #rewrite
RewriteRule ^(.*).php?sometext=(.*)$ http://www.mysite.com/index.php?page=$1.php&sometext=$2 [R=301,L] #redirect
无论如何,这是一个相当标准的问题,用相当标准的代码解决:
RewriteRule ^(.*)$ index.php?get=$1 [L,QSA]
RewriteRule
将整个请求捕获为$1
,并将其作为页面
GET参数传递给index.php
末尾的[QSA]
标志表示获取任何现有的GET参数(sometext=somevalue
,在您的示例中),并将它们作为新请求的附加GET参数添加到新请求中。([L]
标志只是表示这应该是最后执行的规则。)
请注意,这还将重定向对图像或CSS文件等内容的请求,因此最好在该规则之前直接添加以下行:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
这些行表示“如果请求的是实际存在的文件或目录,请不要处理该规则。”这样,对真实文件的请求将直接由Apache处理,而不是由您的PHP脚本处理(或者更可能是错误处理)。可能重复的
RewriteRule ^(.*).php?sometext=(.*)$ index.php?page=$1.php&sometext=$2 [QSA,L] #rewrite
RewriteRule ^(.*).php?sometext=(.*)$ http://www.mysite.com/index.php?page=$1.php&sometext=$2 [R=301,L] #redirect