如何编写一个htaccess / web.动态重定向的配置文件


How do you write a htaccess / web.config file for dynamic redirect

我知道这个问题以前已经回答过很多次了,但是我还没有看到它以一种足够普遍的方式来解释它是如何工作的。

我想创建一个重定向与htaccess/web。配置文件(不确定哪个是正确的使用),它重定向一个动态url到一些东西,看起来像一个实际的页面/文件夹结构。

输入的URL例如,www.example.com/index.php?id=1(或简单的.com?id=1)应该与MySQL数据库一起工作,以便找出页面id 1的URL应该是什么样子,所以例如,如果数据库的行id 1说URL应该是"first_page",URL应该重定向到www.example.com/first_page/,并具有www.example.com/index.php?id=1的所有内容

谁能从一般意义上解释这是如何工作的?我知道这只是因为我不理解——但这就是为什么我希望有人能有效地解释。

编辑:
在Apache服务器上工作,但我想知道这两种情况,因为我需要支持我正在工作的项目

我也有同样的问题,我想创建一个动态重定向来启用漂亮的链接/友好的URL/SEO URL。我的想法是用户点击一个链接,然后php会将其重定向到一个漂亮的URL。我的假设是错误的。

你可以通过

改变浏览器中显示的url
window.history.pushState

,但这只解决了一部分问题。网站的网址看起来不错,但对搜索引擎来说是无用的,如果用户将来使用这个网址,他将找不到相同的页面。

我花了一段时间才明白,重写url实际上并不是重写现有的url来匹配浏览器的url,而是将用户输入的浏览器url重写为一个匹配你的文件结构的url。

因此,如果用户正在查找

https://www.example.com/pageid/23/joe

重写模块会将其转换为

https://www.example.com/page.php?pageid=23&user=joe
然后可以使用

来获取参数并动态创建web内容。

在我开始之前,我的参数包含如下的userid (Before),这对我没有帮助,因为我想看到类似(After)
的东西:

https://www.example.com/page.php?userid=123
:后

https://www.example.com/user/Joe

对于标准重写规则,这意味着您还需要通过将用户名作为参数添加或将userid更改为唯一的用户名(作为userid的替代)来更改参数的逻辑。

web。配置(IIS)如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="rule 1T" stopProcessing="true">
                    <match url="^pageid/([^/]*)/([^/]*)$"  />
                    <action type="Rewrite" url="//page.php?pageid={R:1}&amp;user={R:2}"  />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

第二步,然后需要发生的所有内部链接:你需要改变他们的方式,你创建的链接。一种方法是创建一个像下面这样的全局函数,你可以把你现有的链接包裹起来,然后把每个链接都转换成漂亮的链接。

function L($search) { //Link Rewrite function
        global $LinkArray; //Use global variable with all Links
        foreach ($LinkArrayas $key => $val) {
           if ($val['OrgLink'] === $search) {
               return $val['PrettyLink'];
           }
        }
        return null;            
}

我希望这篇文章能有所帮助,尽管这篇文章有点老。