htaccess中的Regex不工作
我正试图为我目前正在进行的项目重写我的url。 我拥有的正则表达式在我的测试字符串中工作,但当我将它放入.htaccess时就不工作了 我要做的是创建以下url: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
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]