Simple RewriteRule不会更改URL

时间:2017-04-17 22:41:03

标签: apache .htaccess mod-rewrite url-rewriting

我要求的东西真的很简单。我想从中得到:

http://test.com/index.php?articles=mynewarticle&id=5

到此:

http://test.com/mynewarticle.html

我不明白为什么,但是以下.htaccess没有完成这项工作:

RewriteEngine On
RewriteRule ^([^/]*)\.html$ /index.php?articles=$1&id=5 [L]

当我输入

http://test.com/index.php?articles=mynewarticle&id=5 

我得到了

http://test.com/index.php?articles=mynewarticle&id=5

不确定是否在Apache中修改了某些内容以禁用此选项的方式,我不知道在哪里检查这个。提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

您需要外部和内部RewriteRules的组合将orignal网址转换为SEO友好格式

RewriteEngine on
#redirect "/index.php?articles=foobar&id=123" to "/foobar.html"
RewriteCond %{THE_REQUEST} /index\.php\?articles=([^&]+)&id=.+ [NC]
RewriteRule ^ /%1.html [NE,L,R]
#rewrite "/foobar.html" to "/index.php?articles=foobar&id=5
RewriteRule ^([^/]*)\.html$ /index.php?articles=$1&id=5 [L]