【问题标题】:Dynamic Website while still being SEO compatible [duplicate]动态网站,同时仍然与 SEO 兼容 [重复]
【发布时间】:2012-07-23 18:26:24
【问题描述】:

可能重复:
.htacces to create friendly URLs. Help needed

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

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

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

  • domain.com/plugins/随便
  • domain.com/plugins/另一个页面名称

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

  1. domain.com/plugins/whatever 和 domain.com/plugins/anotherpagename 都会重定向到 PHP 脚本。

但是,我不知道如何创建一个 .htaccess,它允许 PHP 脚本获取页面名称,以便它可以搜索 SQL 数据库并显示正确的信息。

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

  1. 也许其他人可以为此提出更好的方法?

提前感谢您的帮助。

【问题讨论】:

  • 只要每个页面有一个唯一的 URL,你在后端做什么都没有关系。 URL 可以是example.com/plugin?page=whatever,它的设置非常简单,并且对于 SEO 和其他任何东西一样好。但是您需要使用上面链接的 URL 重写解决方案...

标签: php .htaccess seo


【解决方案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 将文件不存在的所有请求(即图像/css/js 等)重写为 yourscript.php。

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

【讨论】:

    【解决方案2】:

    为什么不创建一个实际的目录? 例如。

    domain.com/plugins/whatever domain.com/plugins/anotherpagename

    whatever 和 anotherpagename 都是目录。 然后将 html 文件作为 index.html 写入目录中。 不需要 htaccess,您仍然可以使用与上述相同的 url 访问。

    【讨论】:

      【解决方案3】:

      我不知道你是否使用任何框架。我有使用codeigniter 的解决方案。可以使用其他框架/核心 PHP 来模拟。

      codeigniter具体解决办法:

      1. 在 config/routes.php 中定义

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

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

      为了提高性能,您可以保留 html 页面的静态版本,并在“getPageFromDb”函数中编写相关检查,以决定是从静态还是从 db 获取页面。

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

      【讨论】:

        猜你喜欢
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-29
        • 2014-12-07
        • 2011-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多