动态网页的hta​​ccess

时间:2012-04-23 15:00:18

标签: php .htaccess dynamic-data

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

例如:http://www.mywebsite.com/flights-result.php?id=10此网址是非洲Entebbe航班的详细信息页面,我希望其中包含http://www.mywebsite.com/Africa/Entebbe.htm

的网址

对于他们来说,还有一件事我需要为每个页面添加这个吗?数据每天都在更新,那么有没有简单的方法自动编写URL?

任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:2)

我真的不认为你想要完成的事情与mysql有什么关系。您正在寻找的是URL重写。有无数的文章可以告诉你要遵循的方向。我不太确定你使用的是哪个Web服务器。我认为它是Apache。 Here是Apache module_rewrite指南。

答案 1 :(得分:2)

鉴于原始网址,其中并没有使用mod_rewrite完全执行此操作的所有信息。

所以你可以做的就是将所有的web请求发送到控制器文件,并从那里解析请求uri并加载正确的页面。

所以在htaccess中,就像......

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

然后在controller.php中解析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的数据,然后检查提供的“country”和“place”是否正确(阻止人们在这里输入任何内容),并返回4040如果不是。

请务必将应用输出的所有链接更改为新样式。


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