2015-06-10 31 views
0

我一直在寻找这个约2小时了,并尝试了所有的解决方案,但仍然无法弄清楚我做错了什么。我正在编写api。我试图使用“漂亮”的网址,而不是必须通过参数。重写获取参数与htaccess无法正常工作

当我打电话给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] 

任何想法我做错了吗?

+0

验证是否你的'.htaccess'启用与否,通过把你的'.htaccess'的顶部相同的垃圾(随机)文本,看看它是否产生500(内部服务器)错误或不当您访问浏览器中的页面? – anubhava

+0

在顶部添加随机东西确实返回500. – Zamereon

回答

0

你的.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] 
+0

尝试过,但我得到的结果与以前相同。 – Zamereon

+0

'categories'是一个真正的目录吗? – anubhava

0

试试你的规则,这样一来,使/可选的为好。

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]