【问题标题】:htaccess RewriteRule Issueshtaccess 重写规则问题
【发布时间】:2011-03-23 03:37:58
【问题描述】:

我有一个 PHP 页面读取 $_GET 变量作为类别和页面。

然后我让 .htaccess 将 url.com/categroy/page 转发到 index.php 文件,以便它完成工作。

但是我无法让 htaccess 规则正常工作

RewriteEngine On
RewriteRule ^/([^/]+)/(.[^/])  /index.php?category=$1&page=$2
RewriteRule ^/([^/])  /index.php?page=$1

关于我缺少什么的任何想法?

【问题讨论】:

    标签: php regex .htaccess


    【解决方案1】:

    您的规则缺少结尾分隔符$. 错位在那个位置。您还需要为第二个 [] 字符类添加一个 + 量词:

    RewriteRule ^([^/]+)/([^/]+)$  index.php?category=$1&page=$2   [L]
    RewriteRule ^([^/]+)$  index.php?page=$1    [L]
    

    对此我不确定,但我还删除了前导的 / 斜杠。当您将 .htaccess 放在根文件夹中时,它应该是隐式的。

    此外,您可能需要典型的 RewriteCond 来排除任何真实文件名被重写。将其放在每个 RewriteRule 之前:

    RewriteCond  %{REQUEST_FILENAME}  !-f
    

    【讨论】:

    • 目标路径前也不应该有/。 index.php?page=$1,不是/index.php?page=$1
    猜你喜欢
    • 2014-07-17
    • 2014-01-23
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多