2

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

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

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

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

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

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

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

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

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

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

预先感谢您的帮助。

4

3 回答 3

2

对于如何执行此操作,您有几个选项。符合您要求的最简单方法是将以下内容添加到您的 .htaccess 文件中:

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

以上将所有请求传递/plugins/anything给 yourscript.php,您可以使用 .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。

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

于 2012-07-25T10:45:40.257 回答
0

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

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

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

于 2012-07-25T10:40:49.060 回答
0

我不知道你是否使用任何框架。我有使用codeigniter. 可以使用其他框架/核心 PHP 进行相同的模拟。

codeigniter具体解决办法:

  1. 在 config/routes.php 中定义

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

  2. In 'getPageFromDb' function you should write your code to get the page from db based on the parameter 'whatever' and echo the output directly or through a view template (depending on your logic / scenario).

And for performance you may keep a static version of the html page and write a relative check in the 'getPageFromDb' function to decide whether to get the page from static or from db.

Considering the url format and the well formed HTML rendering, it should be Search Engine friendly page.

于 2012-07-25T10:49:00.000 回答