Apache 如何为不同的URL编写下面的htaccess重写规则

Apache 如何为不同的URL编写下面的htaccess重写规则,apache,mod-rewrite,Apache,Mod Rewrite,我正在使用PHP创建一个网站 开发环境是Windows(使用xampp) 网站的页面根据“page”变量的值显示,我们将该变量作为url变量传递给index.php文件 i、 e.http://example.com/index.php?page=xyz 上面的url指向xyz.php文件 大约有50页(以后可以增加) 我希望我的网址是这样的 http://example.com/xyz 为此,我在.htaccess文件(在项目的根文件夹中)中编写了以下.htaccess规则 但它根本不起作用

我正在使用PHP创建一个网站

开发环境是Windows(使用xampp)

网站的页面根据“page”变量的值显示,我们将该变量作为url变量传递给index.php文件

i、 e.
http://example.com/index.php?page=xyz

上面的url指向
xyz.php
文件

大约有50页(以后可以增加)

我希望我的网址是这样的

http://example.com/xyz

为此,我在.htaccess文件(在项目的根文件夹中)中编写了以下
.htaccess规则

但它根本不起作用

另一个url是
http://example.com/index.php?page=abc&name=gaurav&id=10&page_no=2

我希望这个url显示如下

http://example.com/abc/gaurav/10/2

我举了一个例子,url有很多不同的形式,但是页面变量始终存在于url中

如果我为上述两个URL都提供了规则,那么什么都不起作用(显示500个内部服务器错误)

请帮我写这条规则。

试试看

RewriteRule ^([^/]+)$ index.php?page=$1 [L]

所以a+而不是星星。它将使用所有字符,直到他找到一个正斜杠(/)

谢谢你的帮助,但它不起作用。500内部服务器错误。@Gaurav Sharma抱歉,我的错误。我在上面的帖子中修改了代码。这适用于我的本地设置。我强烈建议这是htaccess中的最后一条重写规则。现在url变量“page”的值完全丢失了。现在这个值对于所有页面都是静态的,比如index.php。。此外,上面的规则不适用于此url“”,如果您阅读我的答案,您将看到它将使用所有字符,直到他找到正斜杠为止。如果你想要更多的变量,你需要添加它们。重写规则^([^/]+)/([^/]+)/$index.php?page=$1&var2=$2 etc当变量较少时会发生什么?i、 我在重写规则中提到了4个变量,我只提供了其中的2个。
RewriteRule ^([^/]+)$ index.php?page=$1 [L]