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

mrN*_*mrN 0 php .htaccess

我试图抓住一个网址,如

http://www.mysite.com/somepage.php?sometext=somevalue
Run Code Online (Sandbox Code Playgroud)

并将其重定向到.

http://www.mysite.com/index.php?page=somepage.php&sometext=somevalue
Run Code Online (Sandbox Code Playgroud)

我尝试在网上搜索这样的.htaccess,但找不到它.

你能帮我么?

Age*_*rum 5

我很确定这是重复的, 但我发现它/它们有点问题[编辑:我发现了一个,虽然可能不是最好的例子].

无论如何,这是一个相当标准的问题解决相当标准的问题:

RewriteRule ^(.*)$ index.php?get=$1 [L,QSA] 
Run Code Online (Sandbox Code Playgroud)

所述RewriteRule捕获作为整个请求$1,并将其传递到index.php作为pageGET参数.

最后的[QSA]标志表示采用任何现有的GET参数(sometext=somevalue在您的示例中),并将它们作为新请求添加为其他GET参数.(该[L]标志只是说这应该是最后执行的规则.)

请注意,这也会重定向图像或CSS文件等请求,因此最好此规则之前直接添加以下行:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Run Code Online (Sandbox Code Playgroud)

这些行说"如果请求是针对实际存在的文件或目录,则不处理规则".这样,对真实文件的请求将由Apache直接提供,而不是由PHP脚本处理(或更可能是错误处理).