【问题标题】:Creating a single URL with htaccess使用 htaccess 创建单个 URL
【发布时间】:2020-12-15 08:39:40
【问题描述】:

是否可以使用 htaccess 创建单个 URL?以下是我需要的 SELF URL 示例。

示例:

本地主机/博客(类别)

本地主机/常见问题(内容)

本地主机/书(标签)

  RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
     
    RewriteRule ^(en|de|tr)/?$ ?lang=$1 [QSA,NC,L]
    
    RewriteCond $1 !^(css|js|images|inc|lang)
    
    RewriteRule ^([0-9a-zA-Z-_]+)-([0-9]+)$ article.php?url=$1&id=$2 [L,QSA]
    
    RewriteRule ^([0-9a-zA-Z-_]+)$  article.php?caturl=$1&catid=$2 [L,QSA]

    RewriteRule ^([0-9a-zA-Z-_]+)$  tag.php?tagurl=$1&id=$2 [L,QSA]

【问题讨论】:

  • 可以,但是您需要一个 PHP 脚本,然后在脚本中确定参数是标签、内容还是类别。希望你永远不会得到一个名为 blog 的标签
  • 为什么不选择localhost/tag/XYZlocalhost/category/XYZ

标签: php apache .htaccess


【解决方案1】:

由于没有“主要”差异可以告诉您请求的 URL 指向特定类型的内容,我将建议 2 种方法:

1。 为 categorytagarticle 路由定义前缀

RewriteRule ^/category/([0-9a-zA-Z-_]+)$  article.php?caturl=$1&catid=$2 [L,QSA]

RewriteRule ^/tag/([0-9a-zA-Z-_]+)$  tag.php?tagurl=$1&id=$2 [L,QSA]

RewriteRule ^/article/([0-9a-zA-Z-_]+)-([0-9]+)$ article.php?url=$1&id=$2 [L,QSA]

将所有 url 重定向到 php 脚本,该脚本将查询 DB 并通过 url 搜索内容的类型

RewriteRule ^([0-9a-zA-Z-_]+)-([0-9]+)$ content.php?url=$1 [L,QSA]

然后在这个 content.php 中针对 categories 表运行查询, 如果没有匹配,则在 tags 表中搜索...等等... 直到没有匹配重定向到 404 页面。 找到相关的内容类型后,您可以包含相关的 php 文件以继续处理此请求。

【讨论】:

    猜你喜欢
    • 2013-04-17
    • 2014-02-09
    • 2012-07-20
    • 1970-01-01
    • 2014-12-04
    • 2013-09-22
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多