2013-05-22 11 views
-1

我似乎无法谷歌这一点。我试图建立我的网站,但我希望指定文件(即/filename.php),并将它们变成/文件名/在URL和链接。我不确定这是网址重写还是文件重定向或其他?有没有我可以使用的框架?如何将/filename.php转换成/ filename/

+0

使用.htaccess进行网址重写和搜索引擎友好的网址 –

+0

您使用什么网络服务器? Apache的? Nginx的? –

+0

@David我认为Apache – muudless

回答

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/ 
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 

然后我使用网络服务器(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; 
     } 
    } 
} 
0

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

塞表结构应该是slugId | slug |文件名|路径

所有请求,请访问URL类,实际上根据鼻涕虫名称()是

显示对网址提取文件名。您的网站htaccess应该移动索引中的所有请求。您可以拨打

url的功能根据slug调用并要求值。