Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
htaccess中的Regex不工作_Regex_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

htaccess中的Regex不工作

htaccess中的Regex不工作,regex,apache,.htaccess,mod-rewrite,url-rewriting,Regex,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正试图为我目前正在进行的项目重写我的url。 我拥有的正则表达式在我的测试字符串中工作,但当我将它放入.htaccess时就不工作了 我要做的是创建以下url: http://project.localhost/abcd/index.php?test=test123 改写为: http://project.localhost/index.php?id=abcd&test=test123 这是我当前在.htaccess文件中的内容: Options +FollowSymlinks R

我正试图为我目前正在进行的项目重写我的url。 我拥有的正则表达式在我的测试字符串中工作,但当我将它放入.htaccess时就不工作了

我要做的是创建以下url:

http://project.localhost/abcd/index.php?test=test123
改写为:

http://project.localhost/index.php?id=abcd&test=test123
这是我当前在.htaccess文件中的内容:

Options +FollowSymlinks
RewriteEngine on

RewriteRule /\/(.*?)\//g /index.php?id=$2 [QSA]
有人知道我错过了什么吗

编辑:忘记提及?test=将不总是相同的。它可以有多个不同的参数


谢谢

mod_rewrite无法理解规则的模式,这就是它未被处理的原因

尝试:


您可以使用更简单的正则表达式

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?id=$1 [QSA]
注意,
[QSA]
在查询字符串中附加了其他参数


编辑:为文件添加了条件

谢谢回复!不幸的是,还没有运气,我在我的htaccess文件和在线htaccess测试仪中尝试了它。另外,我忘记了在我的原始问题中提到的url并不总是有?test=,它也可以是另一个值,有时也可以是多个值。我将编辑我的问题。道歉!很抱歉,我还没有回复,测试了很多不同的东西。这现在引发了一个内部服务器问题。在线测试仪声明如下:调试信息:1 RewriteCond%{The_REQUEST}/([^/]+)/index.php\?([^=]+)=([^\s&]+)[NC]未满足此条件。2重写规则^/index.php?id=%1&%2=%3[NC,L]未满足此规则。@Levi此规则正常,在我的apache服务器上工作正常/foo/index.php?test=123已成功重写为/index.php?id=foo&test=123。我认为你的其他规则与此相冲突,或者你可能会使用错误的url。Online tester不是100%准确的,所以你不应该依赖它。嗯,我不知道它们会是哪些其他规则。我的htaccess文件不包含任何其他内容,url正是我粘贴在这里的内容。谢谢。它似乎在我使用的在线测试仪中做了一些事情,但在我实际的htaccess文件中没有(我必须将它保存为project.localhost目录中的.htaccess,对吗?)。测试的结果是,最终url为“新url为”。谢谢,这几乎可以正常工作!我得到的不仅仅是id,而是:[id]=>123 test/index.php。我认为这是正则表达式中的一个问题?实际上,我没有在原始URL中添加
index.php
。你能不说这个吗?它不需要
index.php
,就可以工作。好吧,太棒了,谢谢。例如,如果文件不是index.php而是log.php,它会是什么样子?据我所知,在一个干净的URL中不要有任何
.php
文件。当然,您也可以重写为任何其他(现有)php文件。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?id=$1 [QSA]