2015-10-04 53 views
1

我明白这个问题以前已经回答过很多次了,但是我没有看到它的回答方式是足够普遍的解释来理解怎么运行的。如何为动态重定向编写htaccess/web.config文件

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

在例如www.example.com/index.php?id=1(或简单地.com?id=1)中键入的URL应该与MySQL数据库一起工作,以便确定页面id 1的URL应该是什么样的,例如,如果数据库的行ID 1网址应该是“first_page”的网址应该重定向到www.example.com/first_page/,拥有所有的www.example.com/index.php?id=1

内容在一般意义上是如何工作的任何人都可以解释一下吗?我明白这仅仅是我不了解 - 但这就是为什么我希望有人能够有效解释。

编辑:
工作Apache服务器上,但我想知道这两种情况下,我需要同时支持与我的工作

+0

'不确定哪个是正确的使用'你使用的是Apache还是IIS?至少需要了解你的Web服务器。 –

+0

我正在使用Apache,但我想知道这两种方法。 – lsrwLuke

回答

0

项目我有同样的问题,我想要创建一个动态重定向来启用漂亮的链接/友好的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}&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;    
} 

我希望这可以帮助,即使该帖子有点老。