URL重写(SLUG)和URL重定向(htaccess)

时间:2015-05-16 19:52:10

标签: php apache .htaccess mod-rewrite redirect

下面是我的PHP代码(qs.php)。此文件包含url链接。使用SLUG创建的漂亮链接。

<html>
<head></head>
<body>
    <?php
    function create_slug($string){
       $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
       $slug = strtolower($slug);
       return $slug;
    }
    $slugurl=  create_slug('SLUG-text-testing-purpose-only');

    $file = 'qs1'; //this is a php file qs1.php
    $id = '12345678'; //testing ID
    $complete_url = $file."/".$id."/".$slugurl;

    ?>
    <a href ="<?php echo $full;?>"> This is a test link created by slug</a>

</body></html>

上面的链接显示如下 - http://localhost/qs/qs1/12345678/slug-text-testing-purpose-only

修改

QS是放置所有文件的目录。 QS1是一个php文件(qs1.php)

我想从上面的链接12345678 & slug-text-testing-purpose-only获取两个变量。 因为qs1.php是我从$_GET['var1'] & $_GET['var2'];

获取这两个变量的文件

我知道可以通过.htaccess来实现。我尝试了多种选择,但他们没有工作,因为我得到了404。

.htaccess文件放在QS目录中。

以下是我尝试的选项。

RewriteEngine On
    RewriteRule ^qs/([0-9]+)/([^/]+)$ qs1.php?var1=$1&var2=$2 [L]

    RewriteRule ^/([^/]*)/([^/]*)$ /qs1.php?var1=$1&var2=$2 [L]

    RewriteRule  ^qs/([^/]+)/([^/]+)/?$ /qs1.php?var1=$1&var2=$2  [QSA,L]
    RewriteRule /qs/(\d+)/(.*) qs1.php?id=$1&slug=$2    [QSA,L]

我是htaccess和url重定向的新手。

请告知。

由于

2 个答案:

答案 0 :(得分:2)

您可以将此代码放在/qs/.htaccess

RewriteEngine On
RewriteBase /qs/

RewriteRule ^([^/]+)/(\d+)/([^/]+)$ $1.php?var1=$2&var2=$3 [NC,L]

现在,您可以转到http://localhost/qs/qs1/12345678/slug-text-testing-purpose-only,并获得与/qs/qs1.php?var1=12345678&var2=slug-text-testing-purpose-only相同的内容

答案 1 :(得分:0)

RewriteEngine On
RewriteRule    ^qs/qs1/(\d+)/(.+)$    qs1.php?var1=$1&var2=$2    [NC,L]

您可以在此处播放:http://htaccess.madewithlove.be