这个重写规则是怎么回事?

时间:2017-04-13 19:16:52

标签: apache .htaccess mod-rewrite

我只想尝试mod_rewrite并阅读一些有关它的内容。

我在localhost上有这个文件:

board.php?b=123XYZ

想要存档:

board/123XYZ

这是我到目前为止所做的:( .htaccess是可读的并且在根目录中)

RewriteEngine On
RewriteRule    ^board/([A-Za-z0-9-]+)/?$    board.php?b=$1    [NC,L]

但这不起作用。我不明白为什么正则表达式匹配。

2 个答案:

答案 0 :(得分:0)

请试试这个:

RewriteRule    ^board\/([aA-zZ0-9-]+)\/?$    board.php?b=$1    [NC,L]

我认为正向斜线需要向前斜线转义。

此工具有助于正则表达式测试:

http://regexr.com/

答案 1 :(得分:0)

试试这个,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^board/([A-Za-z0-9-]+)/?$ board.php?b=$1 [QSA,NC,L]

你可能会发现404找不到404,因为Apache假定传入的URL为目录。