Apache 如何使用mode_重写功能

Apache 如何使用mode_重写功能,apache,mod-rewrite,url-rewriting,Apache,Mod Rewrite,Url Rewriting,我想知道如何正确使用php的函数模式。 我目前正在使用xampp进行开发。我已经在httpd.conf文件中激活了LoadModule rewrite\u modules/mod\u rewrite.so。 我还编辑了以下行: <Directory /> Options FollowSymLinks AllowOverride All Order deny,allow Deny from all </Directory> 因此,它应该将?

我想知道如何正确使用php的函数模式。 我目前正在使用xampp进行开发。我已经在httpd.conf文件中激活了
LoadModule rewrite\u modules/mod\u rewrite.so
。 我还编辑了以下行:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
</Directory>
因此,它应该将
?m=start
更改为
?start.html
。 当我现在打开
localhost/page/start.html
时,它只显示“它可以工作”。但是为什么它不显示来自
localhost/page/?m=start
的内容呢

另一个问题是,如何更改重写规则,即我可以通过
localhost/page/m=start&set=update
访问
localhost/page/start/update.html


谢谢你的回答

在替换中使用的是绝对路径
/
。因此,在
/page/
的.htaccess文件中使用此规则时,
/page/start.html
的请求实际上将被重写为
/?m=start
,而不是
/page/?m=start

请尝试相对路径:

RewriteRule ^([^/]*)\.html$ ./?m=$1 [L]

哇,反应很快:)谢谢,现在开始工作了。你能告诉我,我怎样才能解决我的第二个问题吗?例如,我有一个localhost/page/?m=kontakt。当我在此页面上发送表单时,url看起来像localhost/page/?m=kontakt&set=update。“重写规则应该是什么样子的?”达米安·弗里齐:哦,我没看到。在这种情况下,您需要使用
RewriteCond
并查看
%{QUERY\u STRING}
的值。但是为了避免相互递归,您还需要查看
%{THE_REQUEST}
或检查响应状态代码。这有点复杂。所以,如果您使用的不仅仅是静态文件,而是一种编程语言,那么您最好使用这种编程语言来实现重定向。我以前从未用过这个。我从哪里获得%{QUERY\u STRING}和%{the\u REQUEST}的值?我在使用php,如何使用这种语言进行重定向?@Damian Frizzi:看看这些答案:,然后
RewriteRule ^([^/]*)\.html$ ./?m=$1 [L]