使用mod_rewrite重定向

时间:2012-01-30 15:59:33

标签: regex .htaccess mod-rewrite

Options +FollowSymLinks
Options +Indexes
RewriteEngine on
RewriteBase /
RewriteRule ^haveg/employer/([0-9]+)/(.*) haveg/employer.php?msg_id=$1

使用

时效果很好
http://localhost/haveg/employer/7003/the-message-title
or
http://localhost/haveg/employer/7003/

问题出在http://localhost/haveg/employer/7003,因为我在最后删除了正斜杠。它给出了页面未找到的错误。

3 个答案:

答案 0 :(得分:2)

RewriteRule ^ haveg / employer /([0-9] +)/?(。*)hasg / employer.php?msg_id = $ 1

我认为添加问号应该可以匹配。

答案 1 :(得分:0)

尝试将最后一行更改为

RewriteRule ^haveg/employer/([0-9]+)([^0-9]*) haveg/employer.php?msg_id=$1

这应该接受这两种情况。

答案 2 :(得分:0)

我建议您添加另一个RewriteRule以明确您的意图。在此代码中,当URL以数字后跟可选斜杠(当msg_id查询字段为空时)时,第一个规则处理这种情况,第二个规则适用于数字后面有消息的情况。

RewriteRule ^haveg/employer/([0-9]+)/?$ haveg/employer.php?msg_id=
RewriteRule ^haveg/employer/([0-9]+)/([^/]+)$ haveg/employer.php?msg_id=$1 [L]
相关问题