Php .htaccess中的重写规则无法按要求工作

Php .htaccess中的重写规则无法按要求工作,php,apache,.htaccess,Php,Apache,.htaccess,我对.htaccess上的重写规则有问题。 我正在尝试用静态URL重写动态URL 该网站是一个多语言网站。 我已经为所选语言创建了静态URL,如下所示 www.example.net/index.php?lang= de www.example.net/de/ ...and so on.... 现在我需要重写一个URL查询,如下所示: www.example.net/de/player.php?Name=Gianfranco&Surname=Zola&id=468 到 我使用

我对.htaccess上的重写规则有问题。 我正在尝试用静态URL重写动态URL

该网站是一个多语言网站。 我已经为所选语言创建了静态URL,如下所示

www.example.net/index.php?lang= de
www.example.net/de/
...and so on....
现在我需要重写一个URL查询,如下所示:

www.example.net/de/player.php?Name=Gianfranco&Surname=Zola&id=468

我使用的规则是:

RewriteEngine On
RewriteRule ^de/spieler-([^-]*)-([^-]*)-([^-]*)\.html$ /player.php?Name=$1&Surname=$2&id=$3 [L]
如果我点击链接以进入与Zola相关的德语页面,该链接不会在请求的个人资料页面上重定向我,而是在我点击链接的同一页面上

浏览器中显示的链接是右侧链接
www.example.net/de/spieler-Gianfranco-Zola-468.html


但是,如上所述,我无法查看player.php页面中包含的详细信息。

应该是这样的

RewriteEngine On
RewriteRule de/spieler-([^-]*)-([^-]*)-([^-]*)\.html$ player.php?Name=$1&Surname=$2&id=$3 [L,NC]
更正
^
是问题所在&我删除了播放器前面的斜杠。php

试试这个规则

 RewriteRule ^de/spieler-([^-]*)-([^-]*)-([^\.]*)\.html$ /player.php?Name=$1&Surname=$2&id=$3 [L]


你做错了。为了管理漂亮的URL,您需要一个路由系统,您可以在任何现代PHP框架中找到它。例如,在Laravel中,您可以在10秒内解决问题:
([^-])
仅用于一个字母。改用
([^-]*)
([^-]+)
+
用于1和更多,而
*
用于0和更多。嗨,纽曼,谢谢你的回答。现在我真的很困惑。我没有使用apache和重写rulse的经验。我应该把这些规则放在哪里?我应该把它们放在文件夹www.example.de/de?@user4265789的main.htaccess还是.htaccess中,你应该把它放在main.htaccess中。从你的问题中替换规则。
 RewriteRule ^de/spieler-([^-]*)-([^-]*)-([^\.]*)\.html$ /player.php?Name=$1&Surname=$2&id=$3 [L]
RewriteRule ^de/spieler-([^-]*)-([^-]*)-([0-9]*)\.html$ /player.php?Name=$1&Surname=$2&id=$3 [L]