2016-02-15 40 views
0

我试图让一个URL的2个不同的部分,并在重写使用它们,但我不能让它工作htaccess的重写捕捉文件路径和查询字符串分别

我想

http://example.com/account/test-page?h=1&t=2 
http://example.com/account/test-page 

改写到

http://example.com/page.php?path=account/test-page&h=1&t=2 
http://example.com/page.php?path=account/test-page 

我已经尝试了十几种不同的方式 - 这是最新的一个:

RewriteRule ^http:\/\/example.com\/([^\?.]*)[\?]?([^/]*)$  http://example.com/page\.php?url=$1&$2 

但它不起作用,我正在撕裂我的头发!

有人能告诉我我在哪搞乱了吗?

+0

从RewriteRule的模式中删除域名。 – starkeen

+0

你甚至可以单看文档吗?这看起来不像... – arkascha

+0

当我做 '^([^ \ ?. *)[\?]?(。*)$ page \ .php \?url = $ 1&$ ​​2' it将第一组添加为GET var(帐户/测试页),但不添加第二组,从原始字符串中获取增值... – Hscott

回答

1

请使用以下规则来代替:

RewriteRule ^(.*)$ /page.php?path=$1 [QSA,L] 

的关键,在这里,是QSA flag,其在追加用于已经传递到page.php查询字符串查询字符串。

要清楚,对/account/test-page?h=1&t=2的请求将在内部重写为/page.php?path=account/test-page&h=1&t=2

+1

ahhh这真是太棒了,完美无缺 - 我一整天都在为这一个而出汗,我不知道QSA旗 千谢谢! – Hscott

+0

非常欢迎。不要忘记将答案标记为已接受。 :) –

相关问题