我知道这个问题以前已经回答过很多次了,但是我还没有看到它以一种足够普遍的方式来解释它是如何工作的。
我想创建一个重定向与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。我的假设是错误的。
你可以通过
改变浏览器中显示的urlwindow.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}&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;
}
我希望这篇文章能有所帮助,尽管这篇文章有点老。