【问题标题】:How to create directory like urls for each page on a website如何为网站上的每个页面创建类似 url 的目录
【发布时间】:2011-04-22 12:11:12
【问题描述】:

我有一个跨多个页面的内容站点,但只有 1 个 index.php 文件根据页面编号从数据库中检索数据。

目前 url 方向必须是 domainname.com/Page/content.php?page=3

我注意到,很多网站都有类似目录的 url 结构,例如:

domainname.com/Page/3

我知道如何将其更改为 domainname.com/Page/?page=3,但我希望删除 ?page 部分。

我怎样才能做到这一点,而不为每个页面单独创建一个目录,内容不断增长,因此每个页面都会发生变化。

谢谢

【问题讨论】:

标签: php apache web


【解决方案1】:

这些网站使用 mod_rewrite 使用正则表达式对请求的 URL 进行“重写”

编辑:

重写这个:domainname.com/Page/3

对此:domainname.com/Page/content.php?page=3

.htaccess 文件中看起来像这样:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z]*)/(.*)$ /content.php/$1/page=$2 [L]
</IfModule>
<IfModule !mod_rewrite.c>
    ErrorDocument 404 /error_with_mod_rewrite.html
</IfModule>

这里我还对 var 名称进行了限制,可以是大写字母或小写字母。

【讨论】:

    【解决方案2】:

    “URL 重写”是执行自定义 URL 结构的功能。这是大多数常见 Web 服务器中非常常见且重要的功能。 URL 重写不仅适用于 Apache。例如,

    Apache 使用 Mod_Rewrite 模块。

    Nginx 使用“重写”和“Try_Files”指令。

    Cherokee 具有内置功能,可通过管理网页面板进行配置。

    还有更多示例,这些只是我使用过的一些示例。此外,我听说一些项目在编程代码中进行了重写。这在新的特定语言网络服务器中变得更加普遍。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      相关资源
      最近更新 更多