在 .htaccess 中重写(URL 带参数)

Rewrite in .htaccess (URL with parameter)

目前我不太了解 URL 在 htaccess 中重写是如何工作的(使用 regEex)。

我想要以下 Url:

example.org/lyrik/kategorien/allgemein-1/

它应该去跟随 Url 以 at 处的数字作为参数:

example.org/index.php?seite=kategorienDetail&kategorienId=1

我尝试了不同的方法,但都不起作用。我最后尝试的是:

RewriteRule ^lyrik/kategorien/allgemein-([0-9]+)$ index.php?seite=kategorienDetail&kategorienId= [L}

这个在整个网站上都出了问题。每个页面都无法访问。

谁能告诉我适用于我的案例的重写规则并解释其中的正则表达式?

我认为您的规则中有一些错别字。试试这个方法。

RewriteRule ^lyrik/kategorien/allgemein-([0-9]+)/?$ index.php?seite=kategorienDetail&kategorienId= [L]

请注意,我在 / 之后使用了 ?,因此它可以是可选的。你有一个反斜杠。同样在规则的末尾,您有一个大括号而不是方括号。

编辑

根据您的评论。如果 URI 的一部分不是常量,则可以使用它。

RewriteRule ^lyrik/kategorien/([^/]+)-([0-9]+)/?$ index.php?seite=kategorienDetail&kategorienId= [L]

此外,[0-9]+ 只是表示它必须是 0-9 之间的数字才能匹配规则,加号表示 1 或更多,基本上表示它不能为空。 * 基本上意味着任何包括空白(0 次或多次出现)。因为你的 link 总是以一个数字结尾,在正则表达式中将它限制为 0-9 确保如果在 URL 中使用任何其他字符它就不会工作。

您可以在此处查看有关正则表达式的更多信息。

http://www.regular-expressions.info/tutorial.html

请试试这个:

RewriteRule ^lyrik/kategorien/allgemein-(.*?)/$ index.php?seite=kategorienDetail&kategorienId= [QSA,L]

我是用脑子写的,但应该可以。如果没有,请告诉我,但应该:)

编辑:请同时添加 QSA 标志以传递您可能拥有的任何其他查询参数。

亚历克斯