当前位置: 首页 > 知识库问答 >
问题:

重写。htaccess(带参数的URL)

郎曾笑
2023-03-14

目前,我不太擅长理解htaccess中的URL重写是如何工作的(使用regEex)。

我想有以下网址:

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=$1 [L}

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

共有2个答案

窦宏旷
2023-03-14

请试试这个:

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

我在从头开始写,但应该可以。让我知道,如果它没有,但它应该:)

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

亚历克斯

郑俊弼
2023-03-14

我想你的规则中有些错别字。这样试试。

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

请注意,我使用了后面的/使其可以是可选的。你有一个反斜杠。同样,在规则的末尾,你有一个卷括号而不是括号。

编辑

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

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

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

你可以在这里看到更多关于正则表达式的信息。

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

 类似资料:
  • 嗯,我的.htaccess有问题,我想重写这个: http://domain.com/a/thread-103518.html#103518 对这个 http://domain.com/a/103518 换句话说。。。我想删除“thread-”和“.”后面的所有内容,/a/必须是变量。。。还有其他带有/bla/和/code的论坛/ 你有什么线索给我吗?非常感谢。 我的.htaccess现在: 重写

  • 我有一个客户在他们的网站上有一个重写规则,使用404和SSL与https:但它总是重写为“www.mywebsite”。com'。他们希望它没有www。每当我试图修改规则时,代码就会因“太多重定向”而中断 这是旧的. htaccess规则 我试图删除上面的“www”,但当我这样做时,你会得到一个错误-无休止的重定向。 目标是一个简单的重写规则,允许所有重定向和404错误转到https://mywe

  • 我需要一个解决方案。需要重写两个URL: 到 我尝试了许多不同的解决方案,但没有一个奏效。然而,我确实重写了这些网址,就像我说的,但是我的页面没有打开,所以我想它都在细节中。 对于提示: > onama.php和pravila.php文件位于/pages/目录中 编辑: 我想我很幸运:)用这个再试了一次,它成功了,我不擅长.htaccess规则,但这是我问题的解决方案: 编辑(新问题) 我试图制定

  • 我用CodeIgniter和几个控制器构建了一个应用程序 除了在应用/配置/routes.php文件中设置为默认的控制器之外,所有控制器似乎都工作正常 我的. htaccess文件看起来像这样: 重写引擎在 RewriteBase/ RewriteCond%{REQUEST_FILENAME}上-重写cond%{REQUEST_FILENAME}-d 重写规则^(.*)$/索引。php/$1[L]

  • 问题内容: 我有一个index.php,它处理所有路由index.php?page = controller(简体)只是为了与视图分离逻辑。 我无法与Rewriterule一起使用。 控制器可能如下所示: 并且: 问题答案: 基本上人们想说的是,您可以像这样编写重写规则: 这将使您的实际php文件如下所示: 您的实际网址如下所示: 在您的PHP文件中,您可以通过如下分解方式来访问参数:

  • 我创建一个网站与CMS的简单版本1.11.11和我使用listit2模块版本1.4.1. 现在这个模块只能生成如下形式的URL: http://example.com/listit2/item-alias/page-id 现在,我不关心用于显示正确模板的页面标识,但由于这是一个多语言网站,我希望listit2在我的(虚拟)语言文件夹后面: http://example.com/lang/listi

  • 问题内容: 我以前从未使用过CodeIgniter,更不用说任何php框架了,我想我可以试试看。一切正常,除了我似乎无法从URL中删除index.php并仍然访问我的页面。 我从未使用过MVC结构,因此我正在学习中,如果做错了,请原谅我。 我试图通过简单地键入 localhost / ci / about* 来访问我创建的名为“ about_page.php”的视图 , 但是目前我只能使用 loc

  • 问题内容: 网站正在无法访问文件的网络主机上运行。但是,我想对用户友好的URL进行URL重写。 例如原始URL 预期网址 问题答案: 正如其他人所说,只需使用即可。 网址中间的“ index.php”可能看起来有些奇怪,但是我认为没有.htaccess可能无法使其看起来更好 否则,您可以要求托管服务商将任何URL重定向到/index.php,以便无需使用URL就可以处理URL重写。 然后,您可以使