2011-04-09 147 views
2

我有一个新闻(博客)的网站,返回以下格式的URL时,个别职位选择:URL重写 - 查询字符串

website.net/sitenews.php?q=posts/view/postname/12 

我要求重写URL,以便它读取:

website.net/sitenews.php/posts/view/postname/12 

或其中?q=被去除?,使URL可以通过Facebook的喜欢按钮为Facebook网址棉短绒不解析查询字符串来访问的目的,去除任何其他方式。

在htdocs目录的.htaccess在根目录下我都试过文件如下:

Options +FollowSymLinks 

RewriteEngine on 

RewriteCond %{QUERY_STRING} q= 

RewriteRule (.*) website.net/sitenews.php/$1? [R=301] 

这成功地消除了q=?但没有返回的字符串(posts/view/postname/12)的其余部分和URL现在看起来如下:

website.net/sitenews.php/sitenews.php 

有没有人有任何建议来帮我完成这个url_rewrite?

回答

2

试试这个,而不是在你的.htaccess:

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{QUERY_STRING} ^q=(.*)$ [NC] 
RewriteRule ^(.*)$ /$1/%1? [R=301,L,NE] 

R=301 will redirect with https status 301 
L will make last rule 
NE is for no escaping query string 

%1 is capture group for query string q= (whatever comes after q=) 
$1 is your REQUEST_URI 
+0

anubhava,上面的代码生成website.net/sitenews.php/posts/view/postname/12/posts/view/postname/12/posts/view/postname/12 – Hamy 2011-04-10 18:01:25

+0

@哈米:对不起,我有一个未成年人上述规则中的错字导致了无限的重新方向。请参阅我上面编辑的答案。我已经测试过它,它应该没有问题。 – anubhava 2011-04-10 18:37:09

+0

感谢您的回答,但我怎样才能摆脱**。php **以及生成的链接website.net/sitenews.php/posts/view/posts? – Rajat 2012-10-21 05:44:48