在htaccess不工作的情况下重写get参数


Rewrite get params with htaccess not working

我已经搜索了大约2个小时了,已经尝试了每一个解决方案,但仍然不能弄清楚我做错了什么。我正在写一个api。我试图使用"漂亮"的url,而不是必须传递参数。

当我调用myurl.com/categories时,它正确地返回整个类别列表。

当我调用myurl.com/categories/1时,它将获得id=1的类别,它返回404错误。

当我调用myurl.com/categories?id=1时,它成功返回id=1的类别。

我的。htaccess

RewriteEngine On
RewriteRule ^categories/([0-9]+)$ /categories.php?id=$1 [L,NC]
RewriteRule ^([^'.]+)$ $1.php [L,NC]

你知道我做错了什么吗?

把你的。htaccess改成:

Options -MultiViews
RewriteEngine On
RewriteRule ^categories/([0-9]+)$ categories.php?id=$1 [L,NC,QSA]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)/?$ $1.php [L,NC]

试试你的规则,让/也是可选的。

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^categories/([0-9]+)/?$ /categories.php?id=$1 [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^'.]+)$ $1.php [L,NC]