Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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 mod_重写URL_Apache_Mod Rewrite - Fatal编程技术网

简单apache mod_重写URL

简单apache mod_重写URL,apache,mod-rewrite,Apache,Mod Rewrite,好的,我有一件看起来很简单的事情,我正在尝试做,我希望能得到一些帮助 我有这样一个URL: 我希望通过以下方式访问: “q”值可以像“sometask”一样简单,也可以像“sometask/123/otherthing/y”一样复杂,但它始终是“q”的值。其余的参数(例如,paramX和paramY)应该只加在URL的末尾 例如,我想: 可通过以下方式访问: 我在过去设置了一些非常基本的mod_重写规则(pageA重定向到pageB等),但我对它还不够熟悉,甚至没有编写这个(看似)简单的

好的,我有一件看起来很简单的事情,我正在尝试做,我希望能得到一些帮助

我有这样一个URL:

我希望通过以下方式访问:

“q”值可以像“sometask”一样简单,也可以像“sometask/123/otherthing/y”一样复杂,但它始终是“q”的值。其余的参数(例如,paramX和paramY)应该只加在URL的末尾

例如,我想:

可通过以下方式访问:

我在过去设置了一些非常基本的mod_重写规则(pageA重定向到pageB等),但我对它还不够熟悉,甚至没有编写这个(看似)简单的规则。因此,任何帮助(回答)都将不胜感激


谢谢

将其添加到web根目录中的
.htaccess

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteRule ^api/(.+)/$ /api/?q=$1 [NC,L,QSA]

谢谢我感谢你的回应!我的实际URL的结构如下:(URL中的“rest2”是新的)。我想我可以简单地接受您的脚本,然后像这样修改它:RewriteRule^api/rest2/(.+)/$/api/rest2/?q=$1[NC,L,QSA],但这似乎不起作用。它返回一个“找不到页面”错误。我是否错误地修改了它,使其包含“rest2”值?谢谢您是否只希望新url解析为实际url(/api/rest2/sometask/?to/api/rest2/?q=sometask)或实际url更改为新url?(/api/rest2/?q=sometask to/api/rest2/sometask/?)我想我已经搞定了现在,我没有将重写规则放在根目录中,而是将以下规则直接放在/api/rest2目录中:RewriteRule(+)/api/rest2/test.php?q=$1[NC,L,QSA],这非常有效。我在识别^api/rest2/部分时遇到了问题,这就解决了这个问题。你的回答很好;谢谢您也可以从外部使用
RewriteRule^(api/rest2)/(.+)/$/$1/test.php?q=$2[NC,L,QSA]
。您以前从未提到过关于
test.php
的任何内容。感谢您提供更多信息!“test.php”仅仅是我在使用新规则时的一个测试重定向位置。在规则中,当我测试它时,我只是用test.php替换掉了?q=$1?q=$1,它工作得很好。现在事情按照我希望的方式进行了,我删除了test.php?q=$1,并将其替换为刚才的?q=$1。再次感谢!