【问题标题】:how joomla htaccess identifies what is the get method for particular alias?joomla htaccess 如何识别特定别名的 get 方法是什么?
【发布时间】:2012-07-29 13:44:52
【问题描述】:

我正在开发一个支持 SEF 网址的网站。我使用 PHP 作为服务器端语言。我知道 htaccess 基本代码如何使用它。但问题是,如果我想重写一个 php get 链接,我必须像这样将每个链接都放在 htaccess 上。

RewriteRule ^sign-in$ index.php?view=signin
RewriteRule ^register$ index.php?view=register
RewriteRule ^jobs$ index.php?id=2 

是否有任何可能的方法来自动化使用 htaccess 和 url 特定别名的 url,而不是手动添加重写规则?像joomla的东西?我试图了解 joomla htaccess 如何与特定别名连接。但我仍然无法理解它是如何工作的。我无法理解 joomla htaccess 如何与文章别名建立关系。请帮忙。提前致谢。

【问题讨论】:

    标签: .htaccess joomla alias


    【解决方案1】:

    如果id 的外观与view 的外观没有任何区别(在您的示例中,registerviewjobsid=2) ,那么你必须单独做一个或另一个:

    要“自动化”视图,您可以尝试这样做:

    RewriteEngine On
    
    # all id's here:
    RewriteRule ^jobs$ index.php?id=2 [L] 
    RewriteRule ^something-else$ index.php?id=3 [L]
    RewriteRule ^another$ index.php?id=4 [L]
    
    # this will do all views
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?view=$1 [L]
    

    编辑:如果您需要通过一组外部别名进行这些映射,您需要查看RewriteMap directive。您需要访问服务器或虚拟主机配置才能设置地图,但您的规则可以保留在 htaccess 文件中。

    假设您有一个名为“joomla_maps.txt”的文本文件,它看起来像:

    jobs id=2
    another id=3
    sign-in view=sign-in
    register view=register
    

    等等……

    您可以通过在 RewriteMap 中设置它来使用该映射(在 vhost/server 配置中)

    RewriteMap joomla txt:/path/to/joomla_maps.txt
    

    稍后在您的 htaccess 中:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?${joomla:$1} [L]
    

    查看RewriteMap 文档以获取其他类型映射的一些示例,包括执行脚本或使用 dbm 哈希映射。

    【讨论】:

    • 非常感谢乔恩·林。但我想要的是,除了在 htaccess 文件中添加所有内容之外,我正在寻找一种能够从数据库中获取别名的方法。例如,joomla 使用我正在寻找的方法。我不明白如何在我的网站中实施该方法。 Joomla 不会将所有文章别名和文章 ID 放在 htaccess 上。他们使用另一种方法。我猜他们从数据库中获取文章 ID,别名。问题是他们如何通过别名和特定文章 ID 与 htaccess 建立关系?如果我知道他们的方法,我想我的问题会解决的。再次感谢。
    • @KasunMalith 我已经编辑了答案以包含使用RewriteMap的详细信息
    • 非常感谢。我试过这个。但总是出错。这是我的最后一个问题。似乎 joomla 不使用 RewriteMap。因为我在 joomla htaccess 文件中找不到任何类似的代码。如果您知道,请告诉我他们使用什么方法从数据库中获取别名并将它们与 htaccess 连接。谢谢!
    猜你喜欢
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2017-01-25
    • 2014-05-12
    • 2020-11-28
    • 1970-01-01
    相关资源
    最近更新 更多