重写规则无法按预期工作

时间:2013-08-09 12:00:06

标签: regex apache .htaccess mod-rewrite

这是我的.htaccess代码,

<IfModule mod_rewrite.c>
RewriteEngine On

#RewriteCond %{REQUEST_URI} /view-([a-zA-Z0-9_-]+)/$
RewriteRule ^view-([a-zA-Z0-9._-]+)/$ post.php?id=$1

</IfModule>

,即post = .php文件中的id = $ 1 = my-first-&amp; -thread ++。

链接变为

http://site.com/view-my-first-&-thread++/

并给出错误404。

我希望我的链接是这样的:

http://site.com/view-my-first-thread/

这怎么可能?请帮忙

2 个答案:

答案 0 :(得分:0)

您在RewriteRule中使用的正则表达式与您的示例网址不匹配,因为它排除了+&。有时,通过允许特定字符,您隐式排除了您可能想要的其他字符。

尝试更改规则以匹配斜杠(/)之外的任何内容:

RewriteRule ^view-([^/]+)/$` post.php?id=$1

答案 1 :(得分:0)

这里需要B mod_rewrite的标记。

RewriteRule ^view-([^/]+)/?$ post.php?id=$1 [L,QSA,NC,B]

这将重定向到http://site.com/view-my-first-&-thread++/http://site.com/post.php?id=my-first-&-thread++