【问题标题】:.htaccess file using 2 different rewrite rules.htaccess 文件使用 2 种不同的重写规则
【发布时间】:2011-08-10 07:31:11
【问题描述】:

我有一个 .htaccess 文件,其中有一个重写规则,如下所示:

RewriteRule ^solicitorsin([^/]+)/all/([0-9]+)$ /search/searchresults.php?county=$1&page=$2 [L]

如果页面变量为 2 或更高,我希望继续使用它,但如果它是 1,我想 301 重定向到单独的 url(同一站点)说 http://www.domain.com/solicitorsinCOUNTY/

问题是,如果我尝试使用 301 重定向或重写规则执行此操作,它仍然会执行上述重写规则,所以我最终得到 http://www.domain.com/solicitorsinCOUNTY/?county=COUNTY&page=1

我之前对 .htaccess 做的不多,所以我什至不确定这是否可行,有人可以帮忙吗?将不胜感激。

【问题讨论】:

    标签: .htaccess mod-rewrite redirect


    【解决方案1】:

    如果您使用重写规则,则将 page=1 的规则放在另一条规则之上,并确保您有 [L] 标志。

    或者,您可以使用RewriteCond 来防止规则在特定 URL 上运行,如下所示:

    RewriteCond %{REQUEST_URI} !^solicitorsin([^/]+)/all/1$
    RewriteRule ^solicitorsin([^/]+)/all/([0-9]+)$ /search/searchresults.php?county=$1&page=$2 [L]
    

    【讨论】:

    • 非常感谢 :) 如果我有这样的行: RewriteRule ^solicitorsin([^/]+)/all/1$ domain.com/solicitorsin$1 [r=301,L] 那是否意味着这是每个旧 /all/1 链接上的 301 重定向设置吗?还是我需要为每个人设置手动 301 重定向?
    • @user:不知道你的意思。它会重定向任何匹配模式的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多