2012-08-08 72 views
0

我刚刚花了最近2个小时通过Google和Stackoverflow存档进行拖网,以查看我是否可以找到我的问题的答案,而不是找不到任何东西,我找到了太多!所以很不幸,我不得不加入301重定向问题的山峰。抱歉。并感谢您看看这个;)重写URL并永久重定向到新URL

基本上,我有一个博客,我正在寻求简化URL。目前的URL看起来像这样:

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

我想他们是这样的:

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

我试着将重写规则/(.*)$ /后。 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的canonicalisation位之后添加此。非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仍然存在。这对于s​​eo来说可能不是很好,因为我猜想我会在搜索引擎的眼中拥有重复的内容。我试过在新行的末尾放置[R = 301],但它会停止新链接的工作。还尝试将L放在方括号中,并将其从规范化命令中移除,但没有快乐(L代表最后一个命令,是不是......)。

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

希望是有道理的......

感谢,

马丁:)

回答

0

阿帕奇实际修复本地路径=>正确的完全合格的名称(我原来的假设),但我看到你的文件actualy检查错误的文件。使用你提供的文件,我认为这将作为该文件的内容:

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] 
+0

嗨Sylwester,我已经试过补充说,但它带我到这个页面,当我加载网站:http://tempertemper.net/ post.php?s = post.php并给我错误信息“页面没有正确重定向,Firefox检测到服务器正在重定向这个地址的请求,永远不会完成。由于禁用或拒绝接受cookies而造成的。“ – Martin 2012-08-08 11:55:48

+0

这是因为post.php macthes重写规则并做了一个无限循环。我重写了我的答案,并认为提供的代码将替代您的.htaccess文件。 – Sylwester 2012-08-08 13:07:03

+0

嗯...当我在http://tempertemper.net输入任何网址时,它会把我带到http://tempertemper.net/post.php,包括根目录。奇怪的是,它只剥去了CSS。它还显示在一个页面上的所有帖子,我认为这是有道理的。也许这是我如何将它与规范化重定向一起写入的?我试图删除,但发生了同样的事情... – Martin 2012-08-08 13:15:15