Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何用帖子标题slug重写url?_Php_.htaccess_Url Rewriting - Fatal编程技术网

Php 如何用帖子标题slug重写url?

Php 如何用帖子标题slug重写url?,php,.htaccess,url-rewriting,Php,.htaccess,Url Rewriting,考虑一个url www.example.com/paper-ads-details.php?req=43397&rnd=1308546000 我想将此URL更改为: www.example.com/jobs-in-chanai.php 其中req=43397指的是chanai中名为jobs的帖子 我该怎么重写呢?请帮帮我 如果要使用.htaccess,则需要编写一个脚本以静态方式生成重写规则,因此.htaccess文件包含类似于 RewriteRule^jobs-in-chanai.

考虑一个url

www.example.com/paper-ads-details.php?req=43397&rnd=1308546000
我想将此URL更改为:

www.example.com/jobs-in-chanai.php
其中
req=43397
指的是chanai中名为jobs的帖子 我该怎么重写呢?请帮帮我

  • 如果要使用.htaccess,则需要编写一个脚本以静态方式生成重写规则,因此.htaccess文件包含类似于
    RewriteRule^jobs-in-chanai.php/paper ads details.php?req=43397&rnds=1308546000[L]

  • 在PHP中处理请求开始时的路由。根据slug而不是req和rnds参数解析(并过滤)url以查找帖子。如果需要,缓存结果


  • 在您的数据库中,您需要一列用于“cleanURL”或“slug”以及上面提到的.htaccess规则

    我使用此功能(不是我的代码):


    在艰难的时间之后,我终于成功了,现在我将它分享给其他用户。。。 假设所需的Url是
    www.example.com/programmer-Jobs-in-luton
    规则类似于…

    RewriteRule^([a-zA-Z0-9-]+)$job details.php?slug=$1[L]

    为什么要在友好的url中使用
    .php
    ?除此之外,你真的希望在友好的url中包含页面ID,这样你就不必降低代码的效率(通过slug搜索)。infect我想隐藏参数并像wordpress一样使用slug。为什么不同时包含这两个,例如,chanai中的
    example.com/43397 jobs
    @Sohail你可以使用功能。。但是RewriteMap指令不能在.htaccess文件中声明。这个问题是由同一个用户以不同的名称提出的,具有不同的详细信息,只是在进一步了解他的问题时提出的。OP将其标记为已解决。slug已可用。如何使用htaccess在url中调整它。
    $str=iconv('UTF-8','ASCII//TRANSLIT',$str)将有助于去除像umlauts这样的特殊字符。除此之外,为什么在makeSlug函数中有html实体?PHP不会将它们解析为字符。。
    
       function makeSlug($string, $force_lowercase = true, $anal = false) {
         $strip = array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "=", "+", "[", "{", "]",
                       "}", "\\", "|", ";", ":", "\"", "'", "‘", "’", "“", "”", "–", "—",
                       "—", "–", ",", "<", ".", ">", "/", "?");
        $clean = trim(str_replace($strip, "", strip_tags($string)));
        $clean = preg_replace('/\s+/', "-", $clean);
        $clean = ($anal) ? preg_replace("/[^a-zA-Z0-9]/", "", $clean) : $clean ;
        return ($force_lowercase) ?
            (function_exists('mb_strtolower')) ?
                mb_strtolower($clean, 'UTF-8') :
                strtolower($clean) :
            $clean;
    
    }
    
    "SELECT * FROM `content` WHERE `clean_url` = '" . mysql_real_escape_string($cleanURL) . "'";