2016-01-20 25 views
0

我想使用国防部重写与h查询字符串以下动态URL重定向:重定向到刚刚查询字符串

https://eu1.domain.com/~username/test.php?h=String_112016 

以下URL没有test.php部分:

https://eu1.domain.com/~username/String_112016 

我在我的htaccess文件中尝试了以下内容,但它得到404:

RewriteEngine On 

RewriteRule ^\~username/([^/]*)$ /~username/test.php?h=$1 [L] 

我在htaccess文件中没有任何其他规则。

+0

从你写的代码看,你看到的并不是重定向。当用户请求https://eu1.domain.com/~username/String_112016时,您希望test.php页面以作为参数h发送的“String_112016”呈现...是否正确? – VKK

+0

是的,正好VKK :) –

回答

0

从你写的代码中,我假设你想要的不是实际上的重定向。纠正我,如果我错了,但你想要的是,当用户请求/〜username/String_112016,你希望test.php页面被呈现并通过“String_112016”作为标签为h的参数。

你真的真的很近...试试这个:

RewriteEngine On 

RewriteRule ^/?~username/([^/]*)$ /~username/test.php?h=$1 [L] 

在重写规则的第一个匹配的字符应该是一个正斜杠,而不是反斜杠。这种正斜杠实际上总是出现在请求中,但我认为最好的做法是将其视为可选项,因为从技术上讲,您可能会得到一个没有的请求(格式错误)。 /之后的问号,使/可选。

+0

嗨VKK,我试过你的解决方案,但它仍然要求'test.php'页面 –

+0

记住'〜用户名'实际上是一个URL中的真实路径,如果这是任何相关的 –

+0

@迈克尔,你不想它请求test.php页面吗? – VKK

0
RewriteEngine On 
RewriteBase/
RewriteRule ^~username/test.php\?h=(.*)$ /~username/$1 [L]