动态网站,同时仍然是SEO兼容


Dynamic Website while still being SEO compatible

可能重复:
.htaces可以创建友好的URL。需要的帮助

我想创建一个网站,通过PHP从MySQL数据库加载内容,同时仍在为搜索引擎进行优化。

我已经考虑了几种方法,并正在寻找一些关于哪种方法最好的建议。

我网站上的用户会填写一份表格并提交,然后保存在SQL数据库中。我想拥有它,这样每个新页面都可以像这样访问:

  • domain.com/plugins/任何内容
  • domain.com/plugins/其他页面名称

一些方法:1.提交表单时,脚本会在插件文件夹中生成一个静态HTML页面。当页面被编辑时(会有一个编辑按钮),HTML页面会被更新的信息覆盖。

  1. domain.com/plugins/任何和domain.com/plugins/其他页面名称都将重定向到PHP脚本

然而,我不知道如何创建.htaccess,它将允许PHP脚本获取页面名称,以便它可以搜索SQL数据库并获得正确的信息。

我也不确定搜索引擎会如何处理这些页面?

  1. 也许其他人可以想出一个更好的方法

提前感谢您的帮助。

关于如何做到这一点,您有几个选项。符合您需求的最简单方法是将以下内容添加到.htaccess文件中:

RewriteEngine on
RewriteRule ^/plugins/(.*)$ /yourscript.php?plugin=$1 [L]

以上操作将所有对/plugins/anything的请求传递给yourscript.php,您可以从中使用$_GET['plugin']访问插件名称。

如果"插件"只是一个例子,并且您希望能够使用/anything/anything,那么您可能希望将所有请求传递到PHP脚本,然后解析请求的URL。

要做到这一点,你可以在.htaccess文件中使用这样的东西:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /yourscript.php [L]

为了打破这一点,上面的命令告诉Apache将文件不存在的所有请求(即images/css/js等)重写为yourscript.php。

从那里,您可以通过$_SERVER['REQUEST_URI']访问整个URL。您可以用字符串函数、正则表达式等进行分解。

为什么不制作一个实际的目录?例如

domain.com/plugins/whathingdomain.com/plugins/anotheragename

whatever和另一个页面名称都将是目录。然后将html文件写为目录中的index.html。不需要htaccess,您仍然可以使用与上面相同的url进行访问。

我不知道您是否在使用任何框架。我有使用codeigniter的解决方案。同样的情况也可以使用其他框架/核心PHP进行模拟。

codeigniter特异性溶液:

  1. 在config/routes.php中定义

    $route['plugins/(:any)']="plugins/getPageFromDb/$1";在此之后,在浏览器中,url将是相同的"domain.com/plugins/anything",但实际控制将使用"anything"作为参数来点击"plugins"控制器的"getPageFromDb"函数。

  2. 在"getPageFromDb"函数中,您应该编写代码,根据参数"whatever"从数据库中获取页面,并直接或通过视图模板回显输出(取决于您的逻辑/场景)。

为了提高性能,您可以保留html页面的静态版本,并在"getPageFromDb"函数中编写一个相对检查,以决定是从静态还是从数据库获取页面。

考虑到url格式和格式良好的HTML呈现,它应该是搜索引擎友好的页面。