使用.htaccess更改PHP获取url

使用.htaccess更改PHP获取url,php,html,.htaccess,Php,Html,.htaccess,我的index.php文件从数据库中拖出一个文章列表,目标是用户可以单击它们来查看完整的文章。链接如下所示: echo "<tr><td colspan='2'><a href='"."article.php?type=".$type."&id=".$id."&title=".$title."'>".$title."</a></td></tr>"; http://example.org/article.ph

我的
index.php
文件从数据库中拖出一个文章列表,目标是用户可以单击它们来查看完整的文章。链接如下所示:

echo "<tr><td colspan='2'><a href='"."article.php?type=".$type."&id=".$id."&title=".$title."'>".$title."</a></td></tr>";
http://example.org/article.php?type=news&id=2&title=second-article-test
index.php
文件中的所有文章都链接到同一目录中的
article.php

目标是使更友好的URL如下所示:

http://example.org/news/2/second-article-test
我一直在使用一些.htaccess配置,包括:

RewriteEngine On
RewriteCond %{REQUEST_FILE} !-f
RewriteCond %{REQUEST_FILE} !-l
RewriteCond %{REQUEST_URI} !^/article\.php [NC]
RewriteRule ^(.+)$ /article.php/$1 [L]

但我似乎无法让它工作

我的两个问题是:

  • 如何使用
    example.org/type/id/title
    将变量GET links更改为更友好的
  • 如何在URL中隐藏链接到的
    article.php
    文件

  • 我试过大约20种变体,每次都有问题,如果有人知道如何解决这些问题,请尝试解释一下,以便我下次知道,谢谢

    不应将变量映射的逻辑放入.htaccess文件中


    查看上的stackoverflow问题,然后您需要编写某种类型的FrontController(您需要解析$\u SERVER['REQUEST\u URI'],并确定在何处将路径元素解压为变量)。但实际上,这已经做了很多次了,你应该研究一个框架来为你做这件事。如果您想要一些非常简单的东西,请查看或。

    您不应该将变量映射的逻辑放入.htaccess文件中


    查看上的stackoverflow问题,然后您需要编写某种类型的FrontController(您需要解析$\u SERVER['REQUEST\u URI'],并确定在何处将路径元素解压为变量)。但实际上,这已经做了很多次了,你应该研究一个框架来为你做这件事。如果您想要一些非常简单的东西,请查看或。

    您不应该将变量映射的逻辑放入.htaccess文件中


    查看上的stackoverflow问题,然后您需要编写某种类型的FrontController(您需要解析$\u SERVER['REQUEST\u URI'],并确定在何处将路径元素解压为变量)。但实际上,这已经做了很多次了,你应该研究一个框架来为你做这件事。如果您想要一些非常简单的东西,请查看或。

    您不应该将变量映射的逻辑放入.htaccess文件中


    查看上的stackoverflow问题,然后您需要编写某种类型的FrontController(您需要解析$\u SERVER['REQUEST\u URI'],并确定在何处将路径元素解压为变量)。但实际上,这已经做了很多次了,你应该研究一个框架来为你做这件事。如果您想要一些非常简单的东西,请查看或。

    您可以使用以下功能:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/?article/?
    RewriteCond %{REQUEST_FILE} !-f
    RewriteCond %{REQUEST_FILE} !-l
    RewriteRule ^/?(.*?)/(.*?)/(.*?)/?$ article.php?type=$1&id=$2&title=$3 [QSA,L]
    # example.org/type/id/title
    

    你可以玩这个:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/?article/?
    RewriteCond %{REQUEST_FILE} !-f
    RewriteCond %{REQUEST_FILE} !-l
    RewriteRule ^/?(.*?)/(.*?)/(.*?)/?$ article.php?type=$1&id=$2&title=$3 [QSA,L]
    # example.org/type/id/title
    

    你可以玩这个:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/?article/?
    RewriteCond %{REQUEST_FILE} !-f
    RewriteCond %{REQUEST_FILE} !-l
    RewriteRule ^/?(.*?)/(.*?)/(.*?)/?$ article.php?type=$1&id=$2&title=$3 [QSA,L]
    # example.org/type/id/title
    

    你可以玩这个:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/?article/?
    RewriteCond %{REQUEST_FILE} !-f
    RewriteCond %{REQUEST_FILE} !-l
    RewriteRule ^/?(.*?)/(.*?)/(.*?)/?$ article.php?type=$1&id=$2&title=$3 [QSA,L]
    # example.org/type/id/title