我正在制作一个房地产网站,我希望搜索引擎能够找到我数据库中的每一栋建筑。现在,我是否必须在每次向我的数据库提交建筑物时生成一个新的静态页面,或者我是否可以让谷歌立即搜索我的数据库并使用POST或GET来填充在我的模板页面中,以便建筑物以与静态页面相同的方式显示?
静态示例:http://www.real-estate.com/offices/offices-opera-house-sydney
POST 示例:http://www.real-estate.com?offices=O-123
如果有任何其他方法可以做到这一点,请告诉我好!
提前致谢!
您肯定希望 URL 遵循第一种模式的方案,这是事实。但是您不必为此生成“静态页面”。至少不是通常标题为“静态页面”的东西,所以是一个包含 html 或类似文件的文件。
您的问题与静态或动态页面无关。事实上,这是机器人不知道的事情。它不能从外面“看到”。您提供的两个 URL 可以指向完全相同的“页面”,这就是诀窍。
最简单的方法是使用“URL 重写”。互联网上有大量这方面的例子。细节显然取决于您的设置。它们主要取决于您使用的 http 服务器。对于典型的“apache http 服务器”,您想仔细查看“重写模块”,它为您提供了简单的 URL 重写方法:http://httpd.apache.org/docs/current/mod/mod_rewrite.html
这背后的基本思想:你只给出使用“干净”模式的链接,所以类似于你在问题中命名的第一个 url,不包含任何查询参数。然后,当通过向您的服务器发出请求来使用此类引用时,这些请求将被重写,因此由您的服务器进行解释和本地更改,以处理它们并交付结果。这样您就可以在使用方便的查询参数的同时使用干净的 URL。
示例:
您分发这样的 URL:http://www.real-estate.com/offices/offices-opera-house-sydney
,例如将链接发布到一 block 木板或将其放入由谷歌机器人扫描的站点地图中。
向您的服务器发出请求,因此它收到“问题”/offices/offices-opera-house-sydney
。
重写注意在内部将问题更改为 /process.php?type=offices&object=opera-house-sydney
现在调用脚本 process.php
,传递名为 type
和 object
的参数,输出返回为回答浏览器。
实际上,您的服务器页面看起来像一棵“静态页面”树。
为此所需的重写规则的示例是:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/\/([^/]+)\/(.+)$
RewriteRule ^ /process.php?type=%1&object=%2 [L]
RewriteRule ^ /index.php [L]
如前所述,细节显然在很大程度上取决于您的具体设置。这个例子只是为了让你走上正轨。您将能够通过一些互联网研究、SO 上的现有答案和一些尝试从这里找到自己的方式。