【问题标题】:.htaccess RewriteRule for multiple pages.htaccess RewriteRule 用于多个页面
【发布时间】:2012-08-12 17:46:57
【问题描述】:

我已经为我的网站中的索引页面完成了 RewriteRule。

下面是代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/?$ /index.php?origin=$1
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/([a-zA-Z0-9+\-]+)/?$ /index.php?origin=$1&gender=$2
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/([a-zA-Z0-9+\-]+)/([a-zA-Z0-9+\-]+)/?$ /index.php?origin=$1&gender=$2&type=$3
RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/([a-zA-Z0-9+\-]+)/([a-zA-Z0-9+\-]+)/([a-zA-Z0-9+\-]+)/?$ /index.php?origin=$1&gender=$2&type=$3&page=$4
</IfModule>

网址看起来像

http://babynames.agurchand.com/scottish/male/pythagorean

这是一个单页网站,所以到目前为止一切正常。 然后我想在我的网站上再添加一页,我也添加了。文件名为“namemeaning.php”。

除了粘贴的 htaccess 之外,我还在底部添加了以下代码。但它似乎不起作用。

RewriteRule ^/namemeaning/([a-zA-Z0-9+\-\(\)]+)/?$ /namemeaning/namemeaning.php?name=$1

我已尝试使用以下网址,但我仍然只被引用到索引页面。

http://babynames.agurchand.com/namemeaning/abasi

谁能帮我解决这个问题!

【问题讨论】:

    标签: regex .htaccess


    【解决方案1】:

    您将被转发到索引页面,因为索引页面的正则表达式符合您的请求。你被发送到 index.php?origin=namemeaning&gender=abasi

    http://babynames.agurchand.com/namemeaning/abasi
    'namemeaning' fits the rule ([a-zA-Z0-9+\-\(\)]+)
    'abasi' fits the rule ([a-zA-Z0-9+\-]+)
    

    一个简单的解决方法是添加该行

    RewriteRule ^/namemeaning/([a-zA-Z0-9+\-\(\)]+)/?$ /namemeaning/namemeaning.php?name=$1
    

    上线

    RewriteRule ^([a-zA-Z0-9+\-\(\)]+)/?$ /index.php?origin=$1
    

    您应该记住始终将最具体的 RewriteRule(s) 放在更通用的 RewriteRule 之上。

    有关正则表达式的更多信息,我可以建议您this website

    【讨论】:

      【解决方案2】:

      重写规则从上到下依次检查,所有匹配的规则都按该顺序应用。仔细检查您的规则是否在所需规则之前匹配。 用于此目的的好工具是http://www.regextester.com/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-16
        • 2015-02-24
        相关资源
        最近更新 更多