【问题标题】:HTAcess 301 Redirect URL Parameter that has a Wildcard?具有通配符的 HTAccess 301 重定向 URL 参数?
【发布时间】:2013-09-12 15:30:09
【问题描述】:

我已经接管了一个网站并重写了画廊设施,以使用 Fancy 灯箱插件,而不是为每张图片单独的页面,总共 42 页,即画廊现在只包含一个网页。

因此,我在 HTAcess 文件中为所有相关的 301 添加了 42 次 :( :

RewriteCond %{HTTP_HOST}  ^www\.mydomain\.com$ [NC]
RewriteCond %{QUERY_STRING}  ^view=14$ [NC]
RewriteRule ^viewGallery\.php$ http://www.mydomain.com/gallery/?view=14 [R=301,NE,NC,L]

有没有办法使用通配符来捕获画廊编号,在本例中为 14,并将部分缩短为 HTAccess 文件中的单个条目?

感谢您的建议。

【问题讨论】:

    标签: .htaccess redirect rewrite querystringparameter


    【解决方案1】:

    试试:

    RewriteCond %{HTTP_HOST}  ^www\.mydomain\.com$ [NC]
    RewriteCond %{QUERY_STRING}  ^view=([0-9]+)$ [NC]
    RewriteRule ^viewGallery\.php$ http://www.mydomain.com/gallery/?view=%1 [R=301,NE,NC,L]
    

    这基本上就是您所拥有的,除了您更改查询字符串的正则表达式以捕获 ID,然后您可以在规则的目标中使用 %1 反向引用它。

    但是,更简单的方法是:

    RewriteCond %{HTTP_HOST}  ^www\.mydomain\.com$ [NC]
    RewriteCond %{QUERY_STRING}  ^view=([0-9]+)$ [NC]
    RewriteRule ^viewGallery\.php$ http://www.mydomain.com/gallery/ [R=301,NE,NC,L]
    

    完全删除?view=%1 部分。只要目标中没有?,重写引擎就会自动将查询字符串附加到末尾。

    【讨论】:

    • 很棒,第一次工作。下次一定要记住这个sn-p,非常感谢。 @乔恩林
    猜你喜欢
    • 2015-11-04
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    相关资源
    最近更新 更多