在Friendly-URL上使用RewriteRule - 使用重定向301获取变量

时间:2012-11-07 18:20:37

标签: php .htaccess mod-rewrite get friendly-url

我遇到了一些问题。我经常搜索,尝试过各种变化,但仍然无法正常工作。

我的目标很简单:

重定向: http://site.com/folder1/folder2/

要: http://site.com/folder1/folder2/ 网页

请注意,我正在使用“友情网址”。

现在这里是我尝试的方法,以及我遇到的问题。

1)重定向301

Redirect 301 /folder1/folder2/page http://site.com/folder1/folder2/Page

这个Redirect有效,问题是,我从“页面”获取的变量出现在URL的末尾,这对SEO不利:

http://site.com/folder1/folder2/Page?get=page

2) RewriteRule

mod_rewrite的RewriteRule应该可以解决出现Get Variables的问题(从我读过的内容)。

问题是,我没有让它适用于我的Fancy URL结构。

RewriteRule ^/folder1/folder2/page$ http://site.com/folder1/folder2/Page [R=301,L]

它根本不起作用。重定向没有执行,所以这里肯定是错的。我尝试了很多代码。

你不能直接在友好网址上使用RewriteRule吗?

(友好的网址意味着我删除了.php扩展名)

期待一些帮助! 谢谢!


更新1:

请注意,区分大小写不是问题所在。

即使我的例子是: Page1 =>第2页

而不是: page =>页

问题仍然存在。


更新2:

这是我到目前为止最接近的解决方案(但还没有):

Redirect 301 /folder1/folder2/page http://site.com/folder1/folder2/Page?

我添加了一个“?”最后。

这会给我一个登陆网址: http://site.com/folder1/folder2/Page

它删除了Get Variables,但仍然没有像我想的那样SEO友好。

2 个答案:

答案 0 :(得分:0)

在第二种情况下,如果要在htaccess文件中添加重写规则,则不应匹配前导斜杠。

尝试:

RewriteRule ^folder1/folder2/page$ http://site.com/folder1/folder2/Page [R=301,L]

为什么你问?好问题!

答案 1 :(得分:0)

我不能说我在这里的问题上完全清楚:你是否试图让大小写规则匹配或丢失任何查询字符串?既?

如果它是大写字母,我相信该规则有效(删除了纠正的拼写错误Rajesh和hakre呼出)。它是否希望剥离查询字符串尝试添加尾随?你的统治的后半部分。看起来像是:

RewriteRule ^folder1/folder2/page$ http://site.com/folder1/folder2/Page? [R=301,L]