.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 蛞蝓网址的主要内容,如果未能解决你的问题,请参考以下文章

Htaccess 不起作用 - 不错的网址

HTACCESS 短网址并修改我的网址

.htaccess ModRewrite:找不到网址

如何在 .htaccess 503 重定向中保持网站网址相同

.htaccess 漂亮的网址,空格?

htaccess 实现网址缩短