Apache 一些网站如何使用任何请求的URL在没有404'的情况下动态创建页面;s
例如: 此url不存在esist,但当您访问该网站时,它会将您带到一个搜索页面,其中包含法兰的搜索结果 首先,我认为他们使用了.htaccess和ErrorDocumnet指向一个搜索脚本来返回对url中任何内容的搜索 这很容易做到,但我注意到ebuyer的响应是200ok,而我的方法的响应是404notfound。用户将永远不会看到这一点,但我猜测搜索引擎优化这将是更好的做法,这将返回200确定 他们是怎么做到的Apache 一些网站如何使用任何请求的URL在没有404'的情况下动态创建页面;s,apache,.htaccess,Apache,.htaccess,例如: 此url不存在esist,但当您访问该网站时,它会将您带到一个搜索页面,其中包含法兰的搜索结果 首先,我认为他们使用了.htaccess和ErrorDocumnet指向一个搜索脚本来返回对url中任何内容的搜索 这很容易做到,但我注意到ebuyer的响应是200ok,而我的方法的响应是404notfound。用户将永远不会看到这一点,但我猜测搜索引擎优化这将是更好的做法,这将返回200确定 他们是怎么做到的 谢谢您是对的,它不是通过ErrorDocument指令完成的,因为它会将404状
谢谢您是对的,它不是通过ErrorDocument指令完成的,因为它会将404状态返回给浏览器。这实际上是通过重写规则完成的。请参见以下示例:
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ search.php?q=$1 [L,QSA]
这仅仅意味着,如果您的web服务器上不存在请求的文件、目录或链接,则在内部将请求转发到名为search.php
的脚本,并将请求的URI作为搜索参数q
传递。最后,一个http200
返回到浏览器,而不是404
e、 g./flange
将在内部变成/search.php?q=flange
,并将200返回到浏览器。发生的事情是有一些路由规则在起作用。基本上,一些代码可以看到URL(例如:www.ebuyer.com/flange),并且知道“flange”方面是一个关键字,它应该尝试查找并显示
对于一个类似的概念,比如在这个问题的URL上。
它被分解为以下逻辑概念:
[domain]/[function]/[identifier]/[extra information for human readability]
这告诉服务器上的模块它需要查看“问题”功能,并提供标识符为14689056的问题
在这种情况下,让系统响应搜索结果页面(而不是404页面)非常容易,因为您已经在幕后根据URL重新引导用户
在.NET(3.5+)和IIS中,有一组很好的与URL路由相关的类,可以在全局.Asax中进行操作来实现这一点(早期版本的.NET也可以实现这一点,因为没有本机类,所以它只会带来一些麻烦)
在apache中,您需要处理mod_重写和其他我不太熟悉的零碎东西,因为我是.NET程序员。这个问题会让你开始朝着你需要的方向前进