【问题标题】:Htaccess rewrite not liking dashesHtaccess 重写不喜欢破折号
【发布时间】:2013-07-17 18:51:58
【问题描述】:

我使用以下重写规则在后台将 /pageName 和 /pageName/ 等地址重写为 index.php?page=pageName。它工作得很好,除非 pageName 包含 -。

RewriteEngine On
RewriteRule ^(\w+)$ /index.php?page=$1
RewriteRule ^(\w+)/$ /index.php?page=$1

如何让这些重写规则接受任何输入(或至少包含 A-Z、1-9 和 - 的输入。

谢谢。

【问题讨论】:

    标签: php .htaccess url mod-rewrite url-rewriting


    【解决方案1】:

    您(可能...)不想重写任何现有文件,因此您可以使用以下内容:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([\w\-]+)/?$ /index.php?page=$1
    

    请注意,我将尾部斜杠设为可选。

    【讨论】:

      【解决方案2】:
      RewriteEngine On
      RewriteRule ^([0-9a-zA-Z-]+)$ /index.php?page=$1
      RewriteRule ^([0-9a-zA-Z-]+)/$ /index.php?page=$1
      

      这应该可行。

      【讨论】:

        【解决方案3】:

        \w 等同于[0-9a-zA-Z_]。例如大写+小写字母字符和下划线。 -NOT 的一部分,因此您必须明确允许它:

        ^([\w\-])$
        

        通过创建您自己的角色类。

        【讨论】:

          猜你喜欢
          • 2014-06-25
          • 2011-07-31
          • 2014-10-12
          • 2011-08-08
          • 1970-01-01
          • 1970-01-01
          • 2013-01-24
          • 1970-01-01
          • 2020-09-05
          相关资源
          最近更新 更多