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


.htacces to capture the page name and send it as a get method

我试图捕获一个url,如

http://www.mysite.com/somepage.php?sometext=somevalue

并将其重定向到。

http://www.mysite.com/index.php?page=somepage.php&sometext=somevalue

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

你能帮帮我吗?

我很确定这是一个副本,

但我有一点问题找到它/他们[编辑:我找到了一个,虽然可能不是最好的例子]。

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

RewriteRule ^(.*)$ index.php?get=$1 [L,QSA] 

RewriteRule捕获整个请求作为$1,并将其作为page 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