.htaccess 蛞蝓网址
Posted
技术标签:
【中文标题】.htaccess 蛞蝓网址【英文标题】:.htaccess slug url 【发布时间】:2014-07-30 02:39:04 【问题描述】:我想知道是否有人可以帮助我,我正在尝试使用 slug URL 创建一个网站。
目前,如果用户看到该网址,则类似于
http://www.thedomain.com/artists-single.php?aid=123
但理想情况下,我希望 URL 是
http://www.thedomain.com/artist/artist-name
.
我在数据库中有一个网址友好的艺术家姓名,我想使用它。
目前在我的 .htaccess 文件中,我有以下内容:
RewriteEngine On
RewriteBase /
RewriteRule ^artists-single\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
网站本身是用 PHP 编写的。
谢谢。
【问题讨论】:
您的 PHP 代码中是否提供了从$_GET
中提供的值查找artist-name
的规定?假设您的 PHP 代码已经可以处理查找逻辑,则其中的 Apache mod_rewrite 部分非常简单。
【参考方案1】:
您可以让 Apache 访问 mysql 并将“艺术家名称”映射到它的相应 ID see here(感谢 @Marc B 提供链接)。但是,您也可以这样做(这是我个人使用的),
RewriteRule ^artist/([a-zA-Z0-9]+)/?$ /artist-single.php?artist=$1 [L]
然后在 PHP 中使用$_GET['artist']
获取值,然后在数据库中查询该值以获取艺术家的 ID。或者您可以使用 ID,例如
RewriteRule ^artist/([0-9]+)/?$ /artist-single.php?aid=$1 [L]
URL 类似于 www.example.com/artist/123,它将 id 传递给 $_GET['aid']
【讨论】:
当然可以。 httpd.apache.org/docs/current/rewrite/rewritemap.html 效率不是特别高,但有可能。 啊,我从来不知道,谢谢你的链接。我已将其编辑到我的答案中。【参考方案2】:我建议你使用一个非常简单的前端控制器。这将使您的头痛最小化,并且应该相当简单地查看您当前的设置。快速了解更多详情:http://www.technotaste.com/blog/simple-php-front-controller/
但是为了给你一个快速的起点,前端控制器将是执行的“第一部分”,传统上这是“index.php”文件。使用此前端控制器,您可以拥有对 SEO 友好的 URL,并且不会将任何核心功能更改为您的其他文件。
【讨论】:
以上是关于.htaccess 蛞蝓网址的主要内容,如果未能解决你的问题,请参考以下文章