Apache URL重写到domain.com/custom_url_name

时间:2010-09-22 20:02:51

标签: apache .htaccess mod-rewrite

在Red Hat服务器上使用Apache,我试图在我们的网站上重写成员商店的URL:

domain.com/store.php?url=12345

为:

domain.com/12345

使用这些规则,如果我总是记得添加结尾斜杠,我可以使用它:

Options -Indexes 
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^store/url/(.*)$ store.php?url=$1
RewriteRule ^(.*)/$ store.php?url=$1

domain.com/12345/有效, 但domain.com/12345不起作用。

删除Rewrite代码最后一行中的斜杠会破坏很多东西。有没有办法让这个有或没有结束斜线?

2 个答案:

答案 0 :(得分:0)

如果你做了斜杠optional怎么办?此外,您可能需要指定比(.*)更具体的内容,因为domain.com/a/b/c/d/e会匹配。相反,您可以使用否定的character class来指定斜杠以外的所有内容。

RewriteRule ^([^/]*)/?$ store.php?url=$1

或者,如果您只想捕获数字,则可以使用\d shorthand class(与任何数字匹配)以及+,其中指定必须至少有一位数字本:

RewriteRule ^(\d+)/?$ store.php?url=$1

答案 1 :(得分:0)

您使用^(.*)$的尝试失败,因为它会匹配任何网址路径。使用比.*更具体的模式,可能\d+只允许一个或多个数字:

RewriteRule ^(\d+)$ store.php?url=$1