2012-11-07 39 views
0

我遇到了一些问题。我搜索了很多,尝试过变化,仍然无法实现这个工作。在Friendly-URL上使用RewriteRule - 使用重定向301获取变量

我的目标很简单:

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

要: http://site.com/folder1/folder2/页,我使用 “友好的URL”

通知。

现在,这里是我试过的方法,以及存在的问题我就翻过。

1)重定向301

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

此重定向的工作原理,但问题是,从 “页” 我的GET变量是在URL,这是坏的搜索引擎优化的最后面:

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

2)重写规则

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

的问题是,我没有得到它为我的花式URL结构工作。

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

它根本不起作用。重定向没有执行,所以在这里一定是错误的。我对该代码尝试了许多变体。

难道你不能直接在友好的URL上使用RewriteRule吗?

(友好的URL意味着我扒掉.php扩展名)

期待一些帮助! 谢谢!


更新1:

请注意大小写敏感性不是这里的问题。

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

相反的:页=>页

的问题依然存在。


更新2:

这是我迄今(但仍然还没有实现)最接近的解决方案: “?”

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

我加了一个最后。

这会给我的登陆URL: http://site.com/folder1/folder2/Page

它删除了获取变量,但仍然不像我喜欢的SEO友好。

+1

尝试删除第一个斜杠:'^ /'< - 那一个 - 对于RewriteRule。 – hakre

+0

嗨hakre。我尝试过,但重定向仍然不起作用。 –

回答

0

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

尝试:

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

为什么你问?好问题!

+0

嗨,hank的建议! 我试过了,但不幸的是它没有工作。 :( 它不重定向 我尝试了许多变化到RewriteRule,并且我无法使用友好的URL工作 –

0

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

如果它是大写字母,我相信规则的作用(纠正错字Rajesh和哈克呼吁)删除。它是剥离查询字符串的愿望尝试添加尾随?到你的规则的后半部分。它看起来像:

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

嗨大卫,问题不是真的关于大写,即使我使用** Page1 = >第2页**,重定向仍然不起作用 我试过你的建议,在第二个URL的末尾加上“?”,它仍然不起作用 –

+0

对不起,你把你的RewriteRule ?我从字面上理解这条规则对于我来说是完美的(从一个.htaccess文件中),所以我认为问题在于你的规则只是被忽略/不执行。你想确保你有'RewriteEngine on'规则 –

+0

我的重写规则是在我的.htaccess文件的末尾 我确定它正在执行,因为如果我尝试其他形式不友好URL)他们正在重定向。但是我需要Friendly-URL。是的,我也有'RewriteEngine on'。 –