Php 使用htaccess重定向动态URL,包括查询字符串
我需要将一些URL从旧版本的网站重定向到新的URL。 我没有发现简单URL的问题,但我无法使带有QueryString的URL正常工作:Php 使用htaccess重定向动态URL,包括查询字符串,php,.htaccess,redirect,silex,Php,.htaccess,Redirect,Silex,我需要将一些URL从旧版本的网站重定向到新的URL。 我没有发现简单URL的问题,但我无法使带有QueryString的URL正常工作: Redirect 301 /product_detail.php?id=1 http://www.mysite.com/product/permalink 它只返回一个404,未找到 我还在Silex(我正在使用的PHP微框架)上尝试了一个路由,但它也不起作用: $app->get('/product_detail.php?id={id}', func
Redirect 301 /product_detail.php?id=1 http://www.mysite.com/product/permalink
它只返回一个404,未找到
我还在Silex(我正在使用的PHP微框架)上尝试了一个路由,但它也不起作用:
$app->get('/product_detail.php?id={id}', function($id) use ($app) {
$prodotto = Product::getPermalink($id);
return $app->redirect($app['url_generator']->generate('product',array('permalink'=>$prodotto)));
});
使用htaccess规则有没有办法让查询字符串被视为url的一部分并正确重定向
多谢各位
重定向301/product_detail.php?id=1http://www.mysite.com/product/permalink
Redirect
是一个mod_alias指令,不适合处理查询字符串:
mod_alias设计用于处理简单的URL操作任务。对于更复杂的任务,如操作查询字符串,请使用mod_rewrite提供的工具
摘自
因此,应该使用mod_rewrite
。根目录中一个.htaccess文件中的相同示例如下所示:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/product_detail\.php [NC]
RewriteCond %{REQUEST_URI} !/product/permalink [NC]
RewriteRule .* /product/permalink [R=301,NC,L]
它重定向
http://www.mysite.com/product_detail.php?id=1
致:
http://www.mysite.com/product/permalink?id=1
查询已自动附加到替换URL
对于内部映射,将[R=301,NC,L]替换为[NC,L]
重定向301/product_detail.php?id=1http://www.mysite.com/product/permalink
Redirect
是一个mod_alias指令,不适合处理查询字符串:
mod_alias设计用于处理简单的URL操作任务。对于更复杂的任务,如操作查询字符串,请使用mod_rewrite提供的工具
摘自
因此,应该使用mod_rewrite
。根目录中一个.htaccess文件中的相同示例如下所示:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/product_detail\.php [NC]
RewriteCond %{REQUEST_URI} !/product/permalink [NC]
RewriteRule .* /product/permalink [R=301,NC,L]
它重定向
http://www.mysite.com/product_detail.php?id=1
致:
http://www.mysite.com/product/permalink?id=1
查询已自动附加到替换URL
对于内部映射,请将[R=301,NC,L]替换为[NC,L]感谢您富有洞察力的回答!无论如何,我决定用PHP级别的重定向来解决我的问题,这使得我的.htaccess文件变成了一堵无法阅读的文本墙,因为我有几百个产品页面要重定向。谢谢你富有洞察力的回答!无论如何,我决定用PHP级别的重定向来解决我的问题,这使得我的.htaccess文件变成了一堵无法阅读的文本墙,因为我有几百个产品页面需要重定向。