RewriteRule并传递变量不起作用

时间:2013-09-06 23:45:17

标签: apache mod-rewrite url-rewriting

我想让我的网站更加SEO友好。我研究了这个,并结合其他网站,并没有解决方案的工作。使用这个简单的代码,URL重写可以正常工作:

RewriteRule ^testpage\.php$ destination.php [NC,L]    

但是,当我尝试在动态页面上实现RewriteRule并在URL中传递变量时,没有任何反应。这是我现在的代码不起作用:

RewriteRule ^([^/]*)\.html$ /prodinfo.php?prodid=$1 [NC,L]

我想http://www.mysite.com/products/prodinfo.php?id=268 转换为http://www.mysite.com/268.html

我在Apache 2.2上使用php.5.3谢谢。

2 个答案:

答案 0 :(得分:0)

在浏览器中访问http://example.com/268.html的任何人都将服务器端转换为:http://example.com/products/prodinfo.php?id=268,并使用以下内容:

RewriteEngine On
#RewriteRule ^([0-9]+).html/?$ /products/prodinfo.php?id=$1 [NC]

...或者反过来将浏览器使用中的访问者请求http://example.com/products/prodinfo.php?id=268转换为http://example.com/268.html

RewriteEngine On
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^products/prodinfo.php$ /%1.html? [R]

答案 1 :(得分:0)

你正在寻找这样的东西吗?

RewriteEngine On

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /products/prodinfo\.php\?id=([0-9]+)
RewriteRule ^ /%1.html? [L,R=301]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+).html$ /products/prodinfo.php?id=$1 [L]