我正在尝试使用.htaccess创建漂亮的链接。我是apache的新手,无法弄清楚为什么它不起作用。
我有两页:
single_picture.php
和single_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
非常感谢任何帮助。
艾哈迈尔
答案 0 :(得分:1)
将您的两条规则合并为单一:
RewriteRule ^(.+)s(?=/)/([^/]+)/([^/]+)/?$ /single_$1.php?name=$3&cat_id=$2 [NE,L]
同时删除模式([A-Za-z0-9\-_]+)
,该模式不会像您在视频网址中那样适用于%20
。而是使用匹配任何字符的([^/]+)
,直到达到/
。