代码之家  ›  专栏  ›  技术社区  ›  user1853803

SEO友好的url使用php〔重复〕

  •  2
  • user1853803  · 技术社区  · 11 年前

    我正在尝试使用php制作SEO友好的网站。。。

    在文件夹jcheck中,我有一个index.php文件,它以一个参数“id”作为输入。

    mydomain.com/jcheck/index.php?id=1 works
    

    我该怎么做呢

    mydomain.com/jcheck/1
    

    我试着制作.htaccess文件

    RewriteEngine on
    
    RewriteCond %{REQUEST_URI} 1/
    RewriteRule 1/ http://mydomain.com/jcheck/index.php?id=1
    

    我该怎么做?

    5 回复  |  直到 11 年前
        1
  •  4
  •   Community Egal    7 年前

    你基本上可以通过两种方式做到这一点:

    带有mod_rewrite的.htaccess路由

    在根文件夹中添加一个名为.htaccess的文件,然后添加如下内容:

    RewriteEngine on
    RewriteRule ^/Some-text-goes-here/([0-9]+)$ /picture.php?id=$1
    

    这将告诉Apache为该文件夹启用mod_rewrite,如果它被要求提供与正则表达式匹配的URL,它会在内部将其重写为您想要的内容,而最终用户不会看到它。简单但不灵活,因此如果您需要更多功能:

    PHP路线

    将以下内容放在.htaccess中:

    FallbackResource index.php
    

    这将告诉它为它通常在您的站点中找不到的所有文件运行index.php。例如,在那里您可以:

    $path = ltrim($_SERVER['REQUEST_URI'], '/');    // Trim leading slash(es)
    $elements = explode('/', $path);                // Split path on slashes
    if(count($elements) == 0)                       // No path elements means home
        ShowHomepage();
    else switch(array_shift($elements))             // Pop off first item and switch
    {
        case 'Some-text-goes-here':
            ShowPicture($elements); // passes rest of parameters to internal function
            break;
        case 'more':
            ...
        default:
            header('HTTP/1.1 404 Not Found');
            Show404Error();
    }
    

    这就是大型网站和CMS系统的做法,因为它在解析URL、配置和依赖数据库的URL等方面提供了更大的灵活性。对于偶尔使用的情况,.htaccess中的硬编码重写规则也可以。

    *****从复制此内容 URL rewriting with PHP **

        2
  •  2
  •   Jon Lin    11 年前

    在jcheck目录中的htaccess文件中,使用以下规则:

    RewriteEngine On
    RewriteBase /jcheck/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([0-9]+)/?$ index.php?id=$1 [L,QSA]
    
        3
  •  1
  •   Bora    11 年前

    试试这个:

    RewriteRule ^jcheck/([0-9]+)$ jcheck/index.php?id=$1
    
        4
  •  0
  •   Community Egal    7 年前
    RewriteEngine on
    RewriteRule ^/jcheck/([0-9]+)$ /jcheck/index.php?id=1
    

    另请参阅 here 它对你很有用

        5
  •  0
  •   Jason OOO    11 年前

    将.htaccess文件放入 jcheck 文件夹和写入:

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-D
    RewriteRule ^1/?$ index.php?id=1