Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mod_重写友好URL与404冲突_Php_.htaccess_Mod Rewrite_Http Status Code 404_Http Status Code 301 - Fatal编程技术网

Php mod_重写友好URL与404冲突

Php mod_重写友好URL与404冲突,php,.htaccess,mod-rewrite,http-status-code-404,http-status-code-301,Php,.htaccess,Mod Rewrite,Http Status Code 404,Http Status Code 301,我一直在努力重写我的mod_有一段时间了,我想我已经破解了它 我的CMS使用post.php?s=生成博客文章URL,我一直在尝试删除URL的这一部分,以便它们友好且用户友好。下面是我的修改: <ifModule mod_rewrite.c> DirectoryIndex index.php index.html ErrorDocument 404 http://tempertemper.net/error.php RewriteEngine On RewriteCond %

我一直在努力重写我的mod_有一段时间了,我想我已经破解了它

我的CMS使用post.php?s=生成博客文章URL,我一直在尝试删除URL的这一部分,以便它们友好且用户友好。下面是我的修改:

<ifModule mod_rewrite.c>

DirectoryIndex index.php index.html

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

RewriteEngine On

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

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

RewriteCond %{QUERY_STRING} ^s=(.+)$
RewriteRule post.php /%1? [R=301,L]

RewriteRule ^resources /archive? [R=301,L]

RewriteCond %{REQUEST_URI} !post.php
RewriteRule ^([a-zA-Z0-9_-]+)$ post.php?s=$1

</ifModule>

DirectoryIndex.php index.html
错误文档404http://tempertemper.net/error.php
重新启动发动机
RewriteCond%{ENV:REDIRECT_STATUS}200
重写规则^-[L]
重写cond%{HTTP_HOST}^www.tempertemple\.net$
重写cond%{REQUEST_URI}!cron.php
重写规则^(.*)$http://tempertemper.net/$1[R=301,L]
RewriteCond%{QUERY_STRING}^s=(.+)$
重写规则post.php/%1?[R=301,L]
是否重写规则^resources/存档?[R=301,L]
重写cond%{REQUEST_URI}!post.php
重写规则^([a-zA-Z0-9_-]+)$post.php?s=$1

不幸的是,它似乎是指向没有找到空白页.PHP页面的所有页面,而不是Error .PHP页面。

我的网站在这里:这里有一个不存在的URL

它应该带你去


感谢您查看:)

因为您正在重定向符合
[a-zA-Z0-9_-]+
模式的所有路径,这将只需向您的post.php脚本发送查询字符串
s=此url不存在
。因此,由您的PHP脚本post.PHP检查
this-is-not-a-url
是否存在,因为Apache不可能知道哪些博客帖子ID值有效,哪些无效


作为旁注,我建议使用
/blog/2012-08-24-which
作为您给访问者的路径,而不是
/2012-08-24-which
。这样,您就可以为其他功能(如
/images
)保留路径,而无需在每次需要创建新的实用程序路径时在.htaccess文件中写入新的异常。

找不到的页面示例是什么
/post.php?s=blahblah
?您好@Jon,CMS生成example.com/post.php?s=blahblah,我正在将其重写为example.com/blahblah,但它如何知道是否找不到
blahblah
?我已经按照建议将博客移动到了自己的文件夹中。谢谢所以不是现有页面的所有内容都被重定向了?我猜将博客移动到自己的文件夹中,使用自己的.htaccess可以让404在站点的其余部分工作。但我想最好还是重写一下博客的模版。我有点迷路了……你如何从URL中删除post.php?s=?我所追求的是一种将所有博客文章从example.com/blog/post.php?s=nice post重定向到example.com/blog/nice-post的方法。感谢您的帮助@user1515834:),这就是您所拥有的。但是,由于用户可以提供一个完全符合模式的/blog/post名称,但是引用了一篇不存在的文章,因此需要修改PHP脚本以检查post名称是否确实存在,如果不存在,告诉PHP脚本发出一个404头和一条消息,向用户解释他们请求了一篇不存在的文章。如果PHP从数据库中获取博客文章,Apache无法知道存在哪些博客文章。明白了。如果我理解有点慢的话,很抱歉-修改不是我的专长!谢谢你的帮助:)有点离题了,但我想你不知道如何逃避一场灾难?url中的字符,是吗?这不管用,因为有点麻烦?但是我需要将原始URL指向新的URL:RewriteRule^post.php?s=2012-04-28-evernote$/blog/evernote?[R=301,L]为了避免把这里搞得一团糟,你最好开始一个新的问题。确保用.htaccess mod rewrite和php标记它,以引起正确的人的注意。