Apache 如何将具有相同基本URL的所有URL发送到具有大参数的基本URL?
我是个新手,不知道怎么重写 这是我想做的。 在我的本地Web服务器中,我有一个带有welcome.php的测试目录 所以路线是Apache 如何将具有相同基本URL的所有URL发送到具有大参数的基本URL?,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我是个新手,不知道怎么重写 这是我想做的。 在我的本地Web服务器中,我有一个带有welcome.php的测试目录 所以路线是 http://localhost/test_stuff/welcome.php 我想要一个这样的规则 http://localhost/test_stuff/{任何能来这里的东西} 变成 http://localhost/test_stuff/welcome.php?rest={任何能来这里的东西} 例如,一个类似这样的地址 http://localhost/test
http://localhost/test_stuff/welcome.php
我想要一个这样的规则
http://localhost/test_stuff/{任何能来这里的东西}
变成
http://localhost/test_stuff/welcome.php?rest={任何能来这里的东西}
例如,一个类似这样的地址
http://localhost/test_stuff/some/other/stufff?from=a&to=b
http://localhost/test_stuff/welcome.php?rest=some/other/stufff?from=a&to=b
变成这样的地址
http://localhost/test_stuff/some/other/stufff?from=a&to=b
http://localhost/test_stuff/welcome.php?rest=some/other/stufff?from=a&to=b
因此,我转到虚拟主机配置并添加了这两行代码
#RewriteEngine on
#RewriteRule %{DOCUMENT_ROOT}/api_test/(*) %{DOCUMENT_ROOT}/api_test/welcome.php?rest=$1
但是,由于正则表达式不可编译,我无法重新启动apache
如何编写正则表达式以达到预期效果?使用您显示的示例/尝试的规则;我可以带你去试试下面的规则。请确保在测试URL之前清除浏览器缓存
RewriteEngine ON
##Condition to check THE_REQUEST variable and match values as per requirement here.
RewriteCond %{THE_REQUST} \s/([^/]*)/([^?]*)\?(\S+)\s [NC]
##Rewriting to welcome.php as per requirement with variables.
RewriteRule ^ %1/welcome.php?rest=%2%3 [L]
嗯,我可以试试,但我已经看到了一些无法说服我的东西。这个例子是为了展示一些通用的东西。我真的希望测试后的任何东西都在剩下的东西之后。我将修改我的问题使之成为现实clearer@aarelovich,请你提供更清晰的示例,我可以编辑我的答案,谢谢。我修改了问题,看你是否能更好地理解。Thanks@aarelovich,只允许追加查询字符串,不允许有多个查询字符串imho so URL
http://localhost/test_stuff/welcome.php?rest=some/other/stufff?from=a&to=b
应该有点不同。所以现在有办法将测试内容之后的所有内容都作为正则表达式中的单个组来处理吗?我不明白。