mod重写停止在& ,所以找不到名为'Britain-& -Ireland.php'的页面

时间:2012-06-18 14:00:55

标签: php mysql apache

所以我的重写规则发送

请求

www.cruiseandmaritime.com/cruises/French-Leave.php到

www.cruiseandmaritime.com/cruise_details_by_name.php?id=French-Leave

工作正常

RewriteRule ^cruises/([a-zA-Z0-9-&]+).php?$ cruise_details_by_name.php?id=$1    [NC,L]  # Handle requests for all cruises

然而,有些游轮在其标题中使用了&符号(英国和北部群岛)所以他们会

www.cruiseandmaritime.com/cruises/British-&-Northern-Isles.php

并且这不起作用,因为我的查询通过名称查找巡航,并且传递给我的get变量的唯一位是“英国”在&之后没有别的东西。没有&

所以我很困惑......

Rich :)

3 个答案:

答案 0 :(得分:2)

www.cruiseandmaritime.com/cruises/British-&-Northern-Isles.php

不是有效的网址,因为&不应该在那里。从那里只有一个垃圾箱是垃圾:))

网址中的&符号应为%26

答案 1 :(得分:0)

你的正则表达式很奇怪。您认为-&意味着什么?

我认为应该是这样的事情:

[a-zA-Z0-9\&]

答案 2 :(得分:0)

我在http://martinmelin.se/rewrite-rule-tester/上尝试此操作并且不知道为什么,但是有效的规则:

([&a-zA-Z0-9-]+)