重写URL并永久重定向到新URL

时间:2012-08-08 10:38:12

标签: .htaccess redirect friendly-url

我花了最近2个小时在谷歌和Stackoverflow档案中搜索,看看我是否能找到问题的答案,而不是找不到任何东西,我找到了太多!所以不幸的是,我不得不添加301重定向问题。抱歉。谢谢你看看这个;)

基本上,我有一个博客,我正在寻求简化网址。目前,网址如下所示:

http://tempertemper.net/post.php?s=2012-05-30-freeagent

我希望他们看起来像这样:

http://tempertemper.net/2012-05-30-freeagent

我尝试将RewriteRule /(.*)$ /post.php?s=$1添加到我的.htaccess文件中,但它没有。

完整档案目前如下所示:

<ifModule mod_rewrite.c>

DirectoryIndex index.php index.html

ErrorDocument 404 http://tempertemper.net/error.php

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.tempertemper\.net$
RewriteCond %{REQUEST_URI} !cron.php
RewriteRule ^(.*)$ http://tempertemper.net/$1 [R=301,L] 

</ifModule>

我尝试在重定向www的规范化位之后添加此项。到非www。:

RewriteRule ^([a-zA-Z0-9 _-] +)$ post.php?s = $ 1

有点有效。然后我可以链接到http://tempertemper.net/2012-05-30-freeagent,但问题是,http://tempertemper.net/post.php?s=2012-05-30-freeagent仍然存在。这对seo来说很可能是坏事,因为我想在搜索引擎的眼中我会有重复的内容。我已经尝试在新行的末尾添加[R = 301],但它会阻止新链接工作。还尝试将L放在方括号中并从canonicalisation命令中删除它,但没有快乐(L代表最后一个命令,不是它......?)。

基本上,我是在生成或生成post.php?s =的所有URL之后永久重定向到没有post.php?s =的那些,以便进入这些页面的任何链接已经是重定向,未来的任何链接都将直接指向新外观网址。

希望有道理......

谢谢,

马丁:)

1 个答案:

答案 0 :(得分:0)

Apache实际上修复了本地路径=&gt;适当的完全限定名称(我原来的假设),但我看到你的文件实际检查错误的文件。使用您提供的文件我认为这将作为文件内容:

DirectoryIndex index.php index.html
ErrorDocument 404 http://tempertemper.net/error.php

RewriteEngine On
# don't redirect post.php to itself
RewriteCond %{REQUEST_URI} !post.php
# don't redirect error.php to post.php 
RewriteCond %{REQUEST_URI} !error.php
RewriteRule ^(.*)$ "/post.php?$1" [R=301,L]
相关问题