【问题标题】:Multiple rewrite rules in .htaccess not working.htaccess 中的多个重写规则不起作用
【发布时间】:2014-05-30 00:49:55
【问题描述】:

我正在尝试使用 .htaccess 制作漂亮的链接。我是 apache 的新手,无法真正弄清楚它为什么不起作用。

我有两个页面: single_picture.phpsingle_video.php

两个页面都有两个参数:name 和 cat_id/category_id

这里有两个例子: http://www.unclelol.com/single_picture.php?name=Real-time-images-5&cat_id=13

http://www.unclelol.com/single_video.php?name=football%20fail&category_id=22

这是我的.htaccess

 Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^pictures/([A-Za-z0-9\-_]+)/([A-Za-z0-9\-_]+)/?$ /single_picture.php?name=$2&cat_id=$1 
RewriteRule ^videos/([A-Za-z0-9\-_]+)/([A-Za-z0-9\-_]+)/?$ /single_video.php?name=$2&category_id=$1

现在原因不明。图片的重写效果很好:

http://www.unclelol.com/pictures/13/Real-time-images-5/

但是视频的重写给出了 404 错误:

http://www.unclelol.com/videos/22/football%20fail

任何帮助将不胜感激。

阿马尔

【问题讨论】:

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


    【解决方案1】:

    将你的两个规则合并为一个:

    RewriteRule ^(.+)s(?=/)/([^/]+)/([^/]+)/?$ /single_$1.php?name=$3&cat_id=$2 [NE,L]
    

    同时删除([A-Za-z0-9\-_]+) 模式,该模式不适用于%20,就像您在视频网址中所做的那样。而是使用匹配任何字符的([^/]+),直到到达/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多