【问题标题】:.htaccess slug url.htaccess 蛞蝓网址
【发布时间】: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 部分非常简单。

标签: .htaccess slug


【解决方案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']

【讨论】:

【解决方案2】:

我建议你使用一个非常简单的前端控制器。这将使您的头痛最小化,并且应该相当简单地查看您当前的设置。快速了解更多详情:http://www.technotaste.com/blog/simple-php-front-controller/

但是为了给你一个快速的起点,前端控制器将是执行的“第一部分”,传统上这是“index.php”文件。使用此前端控制器,您可以拥有对 SEO 友好的 URL,并且不会将任何核心功能更改为您的其他文件。

【讨论】:

    猜你喜欢
    • 2021-04-04
    • 2016-06-02
    • 2014-04-02
    • 2016-07-22
    • 2011-02-09
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多