【问题标题】:PHP - how to display customized page url in browserPHP - 如何在浏览器中显示自定义页面 url
【发布时间】:2014-10-15 21:46:41
【问题描述】:

我正在使用带有 PHP 和 MySQL 的 Windows IIS 7。

每当有人在我的网站上开设帐户时,他/她也会创建一个商店 ID,例如 MyHawaiiSpa。此商店 ID 一旦生成,便无法更改。这里我假设这个账号的pkid是1。

现在,访问者点击主页上的MyHawaiiSpa 商店链接。访问者将被发送到shop.php,其中将显示属于MyHawaiiSpa 的所有项目。单击MyHawaiiSpa 商店中的任何产品,将打开product.php 页面,其中显示产品详细信息。

目前,我在 PHP 中使用 querystring 对其进行了管理。所以每个商店都是这样区分的:mywebsite.com/user/shop.php?sid=1。

我现在的问题是:我希望访客点击主页上的MyHawaiiSpa 商店链接,这样访客将看到mywebsite.com/user/MyHawaiiSpa/shop.php 而不是mywebsite.com/user/shop.php?sid=1(我现在已经这样做了。)

我想到的解决方案是:每当有人打开帐户并创建他们的商店 ID 时,将创建文件夹 MyHawaiiSpa,并将 shop.php 以及 product.php 页面复制到 @ 下987654337@ 文件夹以编程方式。将针对将要创建的所有商店重复此过程。

有没有其他方法可以做到这一点,这样我就不需要为每个商店创建文件夹和复制文件,我仍然可以获得我刚才解释的预期结果?

【问题讨论】:

  • 使用 .htaccess 进行 url 重写
  • 作为其 Windows IIS,将其添加到您的 web.config 中。 iis.net/learn/application-frameworks/…
  • 您好 Jithin,感谢您的回复。您能否向我展示如何在 Web.Config 中编写代码以转换 URL(如 mywebsite.com/user/shop.php?mid=1 或 mywebsite.com/user/shop.php?mid=1&sid=MyHawaiiSpa)的非常基本的示例到 mywebsite.com/user/MyHawaiiSpa... 之后我会根据你的帮助去。我真的很抱歉,但现在我无法理解如何在引用您在评论中提供的链接后开始此操作。再次感谢

标签: php .htaccess iis-7 url-rewriting


【解决方案1】:

实现此目的的一个好方法是重写 .htaccess,它允许您将查询转换为对 SEO 友好的 url,并且在该页面上调用时仍然可以正确读取。

Here is apache documentation

强制所有请求通过索引页面的重写的基本示例,除非它们是真正的文件夹或文件,如下所示:

RewriteEngine On
RewriteCond %{REQUEST_URI} !(/$|\.|^$)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 
RewriteCond $1 !^(index.php|images|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [NC,QSA,L]

要在 Windows 服务器上进行类似的重写,您需要编辑 web.config 文件。

【讨论】:

    【解决方案2】:

    当有人注册时复制PHP文件是个坏主意,长期维护它会很麻烦,您只需将ID MyHawaiiSpa 作为唯一键存储在数据库中。并在 URL 中使用 store id 作为 slug。

    因为你在这里使用的是 IIS,所以重写 URL 是很好的阅读方式

    http://www.iis.net/learn/application-frameworks/install-and-configure-php-applications-on-iis/provide-url-rewriting-functionality

    1. 你可以从this link学习.htaccess mod_rewrite

    2. 然后您可以使用this link 将这些规则转换为友好的IIS7

    【讨论】:

    • 感谢您的回复。您能否向我展示如何在 Web.Config 中编写代码以将诸如 mywebsite.com/user/shop.php?sid=1 之类的 url 转换为 mywebsite.com/user/MyHawaiiSpa 的非常基本的示例......之后我会去根据你的帮助。真的很抱歉,但现在我不明白如何开始。
    【解决方案3】:

    您需要使用 URL 重写。它非常容易学习和实施。

    在 linux 服务器上,它是使用文件调用 .htaccess 完成的。在 IIS 上,我认为文件被称为 web.config

    基本上,它的作用是,您将其配置为显示一个 url,而实际上您转到另一个 url。

    这些链接应该可以帮助您快速启动和运行

    http://www.robbagby.com/php/php-and-iis-running-php-under-fast-cgi-and-url-rewriting/

    http://salopek.eu/content/26/introduction-to-url-rewriting-using-iis-url-rewrite-module-and-regular-expressions

    https://www.youtube.com/watch?v=guzJWqNJ3DA&feature=channel

    http://www.phpgenious.com/2010/04/url-rewriting-with-php-and-iis-7/

    http://www.iis.net/learn/application-frameworks/install-and-configure-php-applications-on-iis/provide-url-rewriting-functionality

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      相关资源
      最近更新 更多