Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 使用GET请求重写mod__Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 使用GET请求重写mod_

Apache 使用GET请求重写mod_,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我的大部分网站都在进行修改。现在我有一个搜索,通常会指向 search.php?keyword=KEYWORD 我想把它改写成 search/?keyword=KEYWORD 只是为了让它干净一点。这是我的修改。(我只是发布了一条不起作用的其他规则。) 当我在地址栏中按我所希望的方式键入搜索时,我会看到一个页面,告诉我这是一个“断开的链接”(我猜这相当于Chrome的404错误)。那么我做错了什么?我认为问题在于规则(第一部分)中的“=”或“?”符号,因为当我去掉?关键字=部分时,它会起作用

我的大部分网站都在进行修改。现在我有一个搜索,通常会指向

search.php?keyword=KEYWORD
我想把它改写成

search/?keyword=KEYWORD
只是为了让它干净一点。这是我的修改。(我只是发布了一条不起作用的其他规则。)

当我在地址栏中按我所希望的方式键入搜索时,我会看到一个页面,告诉我这是一个“断开的链接”(我猜这相当于Chrome的404错误)。那么我做错了什么?我认为问题在于规则(第一部分)中的“=”或“?”符号,因为当我去掉?关键字=部分时,它会起作用。这有意义吗


编辑:这是我的完整.htaccess代码:

RewriteEngine on
RewriteRule ^$ index.php
RewriteRule ^thoughts$ archives.php 
RewriteRule ^thoughts/$ archives.php
RewriteRule ^about$ about.php 
RewriteRule ^about/$ about.php 
RewriteRule ^search/\?keyword=([^/]+)$ search.php?search=$1 
RewriteRule ^tags/([^/]+)$ tags.php?tag=$1
RewriteRule ^thoughts/([^/]+)$ post.php?title=$1 [L]
仍在获取错误页

RewriteRule ^search/\?keyword=([^/.]+)/?$ search.php?search=$1
问号字符在正则表达式中具有特殊意义。你需要逃避它

此外,点在字符类中没有特殊意义;您不需要转义它(您要求关键字不包含斜杠和圆点)

问号字符在正则表达式中具有特殊意义。你需要逃避它


此外,点在字符类中没有特殊意义;您不需要转义它(您要求关键字不包含斜杠和圆点)

如果您只想变换:

search.php?keyword=KEYWORD
进入:

您需要做的只是:

RewriteRule ^search/$ search.php [QSA]
QSA标志表示“查询字符串追加”,并通过GET将您的任何请求传递到search.php:

search/?keyword=KEYWORDD
search/?name=value&name2=value2    

您可能还想签出,这会将每个/foo请求发送到它在/目录中找到的任何foo.*文件,尽管它们是。

如果您只想转换:

search.php?keyword=KEYWORD
进入:

您需要做的只是:

RewriteRule ^search/$ search.php [QSA]
QSA标志表示“查询字符串追加”,并通过GET将您的任何请求传递到search.php:

search/?keyword=KEYWORDD
search/?name=value&name2=value2    

您可能还想签出,它会将每个/foo请求发送到它在/目录中找到的任何foo.*文件,尽管它们是。

在正斜杠之前是否需要反斜杠?正斜杠对某些正则表达式库有意义。没有,尝试过,没有改变任何东西。另外,我所有其他的斜杠重写都很好。不过,谢谢!在正斜杠之前需要反斜杠吗?正斜杠对某些正则表达式库有意义。没有,尝试过,没有改变任何东西。另外,我所有其他的斜杠重写都很好。不过,谢谢!谢谢,我想会有类似的事情,但我还是有问题。我仍在获取saem错误页面。我正在发布整个.htaccess代码,可能是因为我做了其他错误。@iMaster您确定要在查询字符串的末尾添加
/?
?我甚至不确定
/
是否可以在查询字符串中。我的modified.htaccess已发布在上面。我仍然没有得到任何结果。谢谢,我想有类似的事情,但我仍然有问题。我仍在获取saem错误页面。我正在发布整个.htaccess代码,可能是因为我做了其他错误。@iMaster您确定要在查询字符串的末尾添加
/?
?我甚至不确定
/
是否可以在查询字符串中。我的modified.htaccess已发布在上面。我仍然没有得到任何结果。我希望人们停止链接到那篇文章。这是一个关于如何在apache中配置PHP的误解(提示:它不是
Addtype应用程序/x-httpd-PHP.PHP
),我希望人们停止链接到那篇文章。在apache中如何配置PHP是一个误解(提示:它不是
Addtype应用程序/x-httpd-PHP.PHP