项目我有同样的问题,我想要创建一个动态重定向来启用漂亮的链接/友好的URL/SEO网址。我记住,用户会点击一个链接,然后PHP会重定向到一个漂亮的URL。我的假设是错误的。
您可以随时更改通过
window.history.pushState
显示在浏览器的URL,但这只是解决问题的1份。该网站的网址看起来不错,但对搜索引擎没用,如果用户将来使用这个网址,他不会找到相同的页面。
我花了一段时间才明白,重写url实际上不会重写现有url来匹配浏览器url,而是将用户输入的浏览器url重写为与您的文件结构匹配的url。
因此,如果用户正在寻找
https://www.example.com/pageid/23/joe
重写模块将转换成
https://www.example.com/page.php?pageid=23&user=joe
这可以被用来获取参数,动态地创建Web内容这一点。
在我开始我的参数包含像下面()之前,用户标识这不会帮助我,因为我想看到的东西像(后)
前:
https://www.example.com/page.php?userid=123
后:
https://www.example.com/user/Joe
使用标准重写规则,这意味着您还需要通过添加用户名作为参数或将用户标识更改为唯一用户名(作为用户ID的替代)来更改参数的逻辑。
在网页中。配置(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;
}
我希望这可以帮助,即使该帖子有点老。
'不确定哪个是正确的使用'你使用的是Apache还是IIS?至少需要了解你的Web服务器。 –
我正在使用Apache,但我想知道这两种方法。 – lsrwLuke