我正在尝试捕获诸如
之类的网址http://www.mysite.com/somepage.php?sometext=somevalue
并将其重定向到。
http://www.mysite.com/index.php?page=somepage.php&sometext=somevalue
我尝试在网上搜索这样的.htaccess,但找不到它。
你能帮帮我吗?
答案 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