我试图捕获一个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]
标志只是表示这应该是最后执行的规则。)
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