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
Php .htacces捕获页面名称并将其作为get方法发送_Php_.htaccess - Fatal编程技术网

Php .htacces捕获页面名称并将其作为get方法发送

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:,尽管可能不是最好的例子] 无论如何,这是一个相当标准的问题

我正在尝试捕获一个url,如

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