2017-09-15 68 views
0

您好,我需要帮助重定向我的.htaccess文件。我想添加一个字符串到URL的末尾。例如:使用.htaccess文件将字符串添加到url

当有人访问这个网址:

www.mysite.com/example

我想重写URL这样说:

www.mysite.com/result.html?search=example

所以我只需要添加字符串result.html?search=之前,无论是在网址的末尾。

这个词的例子只是一个占位符,我需要放在那里工作的任何单词。

谢谢!

+0

对不起,但你不清楚你实际要求什么。请在你的问题精确:这两个变种是_external_ URL实际上是由客户端(浏览器)要求什么_internal_资源它应该被改写成?你的例子读起来有点像你正在寻找重定向,而不是重写。 – arkascha

+0

客户端请求的网址是'www.mysite.com/example',内部资源应重写为'www.mysite.com/result.html?search = example' –

+0

示例是文件夹或文件? –

回答

1

这应该会有帮助。

RewriteEngine on 
RewriteBase/

RewriteRule ^page/([^/]+)/? result.html?search=$1 
+0

对我来说,问题实际上读取不同的,这就是为什么我更喜欢发表任何答案... – arkascha

+0

之前问@ arkascha你所说的话也是有道理的,可以从不同的角度来看待问题,但我认为这是他在这里想要达到的目标。让我们再来澄清一下。 –

1

根据您的附加评论我想这是你实际上是在寻找这样一个问题:

RewriteEngine on 
RewriteRule ^/?(.+)/?$ /result.html?search=$1 [END] 

如果您遇到了这一原则,HTTP状态500(“内部服务器错误”),那么你有可能会运行一个非常旧的apache http服务器版本。尝试使用[L]标志,而不是[END]标志。在这种情况下,你也会在你的http服务器错误日志文件中找到相应的提示。

上述规则在http服务器主机配置和动态配置文件(.htaccess样式文件)中同样适用。显然重写模块必须在http服务器上加载并激活。如果您决定使用动态配置文件,那么您还需要确保这些文件实际上是由http服务器考虑的。阅读有关该文档的AllowOverride指令。

还有一个常规提示:你应该总是喜欢在http服务器(虚拟)主机配置中放置这样的规则,而不是使用动态配置文件(.htaccess样式文件)。这些文件出了名的错误,很难调试,他们真的放慢了服务器。它们只支持作为的情况下最后的选择,你没有对主机配置控制(读:真的很便宜的托管服务提供商),或者如果你有依赖于写自己的重写规则(这是一个明显的安全恶梦的应用)。

+0

辉煌:)尽管只是假设,你的答案有很多深度。 –

+0

感谢您的回答,但我得到了一个500错误['L]'和'[END]'我从你的答案中学到了很多东西,尽管如此谢谢! –

+0

@cup_of最有可能的原因是重写模块根据您的评论而被_not_加载......如前所述:您应该查看您的http服务器错误日志文件。这是您可以阅读有关服务器遇到的问题的更详细的内部信息的地方。 – arkascha