2017-04-10 50 views
1

我重写:成功的.htaccess URL重写 - 下一步是什么?

example.com/food-truck.php?id=1 

到:

example.com/truck/1 

使用:

Options -MultiViews 
RewriteEngine On 

# redirect "/food-truck.php?id=xxx" to "/truck/xxx" 
RewriteCond %{THE_REQUEST} \s/food-truck\.php\?id=([0-9]+)\s [NC] 
RewriteRule^/truck/%1? [R=301,L] 

我重写它的工作,导致example.com/truck/1,但是......我得到一个404未找到在结果页面上,说“在此服务器上找不到请求的URL”。

有什么我缺少的东西,或者我的重写有误吗?我是否需要某种“目标文件”来解释重定向并显示输出?

+0

你去,你想错了方式,所以,当你打'/车/ 1'你重写'/food-truck.php?id=1 ',你有什么只是一个重定向。 – cmorrissey

回答

3

你需要重写的附加规则:

Options -MultiViews 
RewriteEngine On 

# redirect "/food-truck.php?id=xxx" to "/truck/xxx" 
RewriteCond %{THE_REQUEST} \s/food-truck\.php\?id=([0-9]+)\s [NC] 
RewriteRule^/truck/%1? [R=301,L] 

RewriteRule ^truck/\d+/?$ food-truck.php?id=$1 [QSA,L,NC] 
+1

它的工作原理,谢谢!任何建议提取,或“获取”的ID退出的URL使用PHP的food-truck.php页面? – Shane

+0

对不起,没有得到你的问题。这两条规则已经在做。 – anubhava

+0

基本上,$ _GET ['id']在URL重写后不再有效。我需要使用ID来查询数据库,显示结果等。$ _GET ['id']是否仍然提供给我一个结果,还是有一个替代方法,我应该使用新的url? – Shane