【问题标题】:how to open mypage.com/link-page in htaccess without affect other page?如何在 htaccess 中打开 mypage.com/link-page 而不会影响其他页面?
【发布时间】:2017-01-07 10:17:26
【问题描述】:

我有这个代码可以打开mywebsite.com/any-post-name

RewriteRule ^([a-zA-Z0-9_-]+)$ home.php?id=$1 [L,QSA]

问题是,如果有人键入:mywebsite.com/any-post-name/ 页面将无法打开。 所以我补充说:

RewriteRule ^([a-zA-Z0-9_/-]+)$ home.php?id=$1 [L,QSA]

现在,所有其他页面也进入 home.php,例如,我有类别: mypage.com/category/name-category -> 会来到 home.php

RewriteRule ^category/([^(.*)].+)/(\d+)/?$ category.php?categoria=$1&id=$2 

如何解决?

【问题讨论】:

  • 试试home.php$ 而不是home.php?id=$1

标签: php regex .htaccess friendly-url


【解决方案1】:

由于量词 (+) 将/ 放入字符类允许多次。如果你将它移到正则表达式的末尾并使其成为可选的,它应该对你有用。

^([a-zA-Z0-9_-]+)/?$

演示:https://regex101.com/r/jA0oZ1/3

^([^/]+)/?$

演示:https://regex101.com/r/jA0oZ1/4

【讨论】:

  • 非常感谢!我有一个页面调用 /category/ 来打开 allcategories.php 并且它与这个正则表达式匹配......我该如何解决这个问题? RewriteRule ^category/?$ allcategories.php 放在你的正则表达式之前是否是个好主意?
  • 在这种情况下,我会创建一个更加结构化的 URL,否则您将不得不为每个根页面编写一个规则(不应将其定向到 home.php 页面。一个可能的未经测试的解决方案可能是RewriteCond %{THE_REQUEST} !^category/?$rewrite 之前。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多