-1

我似乎无法谷歌这个。我正在尝试构建我的网站,但我希望指定文件(即 /filename.php)并将它们转换为 url 和链接中的 /filename/。我不确定这是 url 重写还是文件重定向或其他什么?有没有我可以使用的框架?

4

3 回答 3

1

在 htaccess 文件中使用以下内容:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

带有 !-d 的行检查它不是一个目录,带有 -f 的行检查请求的文件是一个 .php 文件。

Current URL: www.example.com/something.php 
Output  URL:www.example.com/something/
于 2013-05-22T07:36:50.300 回答
1

这通常是通过 Web 服务器完成的,所以答案取决于您使用的是 Apache、Nginx 还是其他东西。这是我使用 Nginx 的方法。

我通常在我的站点根目录中有一个名为controllers. 中的所有文件都controllers对应于 URL 路径。例如:

/controllers/home.php ---> http://example.com/home
/controllers/about.php ---> http://example.com/about
/controllers/contact.php ---> http://example.com/contact

然后我使用 Web 服务器 (Nginx) 来引导流量(这是它的构建目的)。因此,如果 Nginx 收到对 的请求http://example.com/home,那么它会在controllers目录中查找名为home.php. 如果文件存在,则 Nginx 提供它。如果该文件不存在,那么 Nginx 会提供一些备用页面。Nginx 配置如下所示:

server {

  listen 80;
  server_name example.com;

  root /srv/example;
  index index.php;

  rewrite ^/(.*)/$ /$1 permanent;

  location / {
    try_files $uri $uri/ /controllers$uri.php?$args;
    location ~ \.php$ {
      try_files $uri /index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
      }
   }
}
于 2013-05-22T07:37:04.980 回答
0

您可以为 slug 创建一个表。slug 与文件名和目录相关联。

slug 表的结构应该是 slugId | slug |文件名| 小路

所有请求都转到您的 Url 类,该类根据 slug-name() 实际获取文件名

在 url 上显示。您的站点 htaccess 应该将所有请求移动到 index 中。在索引上,您调用

根据 slug 调用和需要值的 urls 函数。

于 2013-05-22T09:24:37.460 回答