0

我有一个网站,我正在使用 MySQL 来存储和获取数据,有一堆不同目的地的数据(是的,这是一个旅行社网站)我想知道如何设置 .htaccess 文件来显示 SEO 友好的 URL

例如:http ://www.mywebsite.com/flights-result.php?id=10这个 URL 是飞往非洲恩德培的航班的详细信息页面,我想要这个 URL,例如http:// www.mywebsite.com/Africa/Entebbe.htm

对他们来说等等,我还需要为每一页添加一件事吗?数据每天都在更新,所以有什么简单的方法可以自动编写 URL?

任何帮助高度赞赏。

4

2 回答 2

2

我真的不认为你想要完成的事情与 mysql 有任何关系。您正在寻找的内容称为 URL 重写。有无数的文章可以告诉你要遵循的方向。我不太确定您使用的是哪个 Web 服务器。我认为它是阿帕奇。是 Apachemodule_rewrite指南。

于 2012-04-23T15:24:20.137 回答
2

给定原始 URL,其中并没有使用 mod_rewrite 完全执行此操作的所有信息。

因此,您可以将所有 Web 请求发送到控制器文件,然后从那里解析请求 uri 并加载正确的页面。

所以在htaccess中,类似...

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ controller.php [L]

然后在 controller.php 中解析 url 并加载正确的页面。


您可能更喜欢的另一种选择(如果您对特定的最终 URL 很灵活)是让 URL 最终看起来像这样:

http://www.mywebsite.com/flights/10/Africa/Entebbe.htm

这可能比实现控制器更简单(尽管我更喜欢控制器来路由请求)。

所以在htaccess中...

RewriteRule
    ^/flights/([0-9]{1,10})/([a-zA-Z]+)/([a-zA-Z]+)\.htm$
    flights-result.php?id=$1&country=$2&place=$3 [L]

然后在 flight-results.php 文件的开头附近,您应该加载 id 的数据,然后检查提供的“国家”和“地点”是否正确(以阻止人们在这里输入任何内容),如果返回 4040它不是。

请记住将您的应用程序输出的所有链接也更改为新样式。


正如您所提到的,您还可以将所有这些 URL 硬编码到 htaccess 中,但这并不理想:)

于 2012-04-23T15:31:10.620 回答