0

我刚刚花了 2 个小时浏览 Google 和 Stackoverflow 档案,看看我是否能找到我的问题的答案,而不是一无所获,我发现太多了!所以不幸的是,我不得不添加大量 301 重定向问题。对不起。并感谢您看一下这个;)

基本上,我有一个希望简化 URL 的博客。目前,URL 如下所示:

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.:

重写规则 ^([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 放在方括号中并将其从规范化命令中删除,但没有任何乐趣(L 是最后一个命令,不是吗……?)。

基本上,我毕竟在其中生成或生成了 post.php?s= 的所有 URL 都永久重定向到没有 post.php?s= 的 URL,因此进入这些页面的任何链接都已经被重定向,并且任何未来的链接将直接指向新外观的 URL。

希望这是有道理的……</p>

谢谢,

马丁:)

4

1 回答 1

0

Apache 实际上修复了本地路径 => 正确的完全限定名称(我最初的假设),但我看到您的文件实际上检查了错误的文件。使用您提供的文件,我认为这将作为文件内容工作:

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]
于 2012-08-08T10:39:26.510 回答