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

时间:2011-04-08 14:01:08

标签: php .htaccess

我正在尝试捕获诸如

之类的网址
http://www.mysite.com/somepage.php?sometext=somevalue

并将其重定向到。

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

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

你能帮帮我吗?

2 个答案:

答案 0 :(得分:5)

我很确定这是重复的,但是我发现它/它们有点问题 [编辑:I found one,尽管可能不是最好的例子]

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

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脚本处理(或更可能是错误处理)。

答案 1 :(得分:0)

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