htaccess目录到文件重定向问题

时间:2009-08-12 17:42:18

标签: .htaccess mod-rewrite

我正在尝试使用以下.htaccess文件

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^images/
RewriteRule (.*) view.php?picid=$1 [L]
RewriteRule ^/user/(.*)$ /users.php?user=$1

我希望有两件事情发生:每当有人请求/1234时,它会重定向到/view.php?picid=1234,当有人访问/users/bob时,它会重定向到/users.php?user=bob

然而,我的代码似乎无法正常工作。

2 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。这是一个应该有效的方法:

RewriteRule ^user/(.+)$ users.php?user=$1 [L]
RewriteRule ^([0-9]+)$ view.php?picid=$1 [L]

第一条规则将捕获任何URI路径以/user/开头,后跟一个或多个任意字符的请求。第二个将捕获任何URI路径以/开头后跟一个或多个数字的请求。

答案 1 :(得分:0)

规则的最初问题是带有(。*)的RewriteRule会匹配所有内容。

如果您不希望它匹配带斜杠的URL(例如users / bob),请尝试^([^ /] *)$

其次,在重写URL后,新URL会再次执行您的规则。如果你想避免匹配已经重写过一次的东西,你应该添加一个像

这样的条件
RewriteCond %{REQUEST_URI} !\.php