【问题标题】:PHP htaccces url rewrite challengePHP htaccces url 重写挑战
【发布时间】:2017-03-28 09:18:13
【问题描述】:

据我所知,这个挑战对我来说太过分了。我需要重写丑陋和复杂的 url 来清理。

发件人:

domain.com/index.php?job=wiad&idg=3&id=42&x=20&n_id=8

这样说:

domain.com/read/part1/article8

这是相当老的应用程序,IDG、ID、ID - 位于 DB 的 table1 中,N_ID 位于 DB 的 table2 中。我有一个与这些 ID 相关的名称:

$requesturi = $_SERVER['REQUEST_URI'];
$urlinitial = explode("?",$requesturi); 
parse_str(html_entity_decode($requesturi), $get_array);
foreach($get_array as $key => $value) {$key = $value;}
$sql = "SELECT name FROM table1 WHERE idg=$idg and id=$id and x=$x";
$sql2 = "SELECT title FROM table2 WHERE n_id=$n_id";

最后,我得到了两个具有当前部分和文章名称的变量:$page_name$art_name。

index.php?job=wiad部分是可变模式,取决于角色:job=wiad表示显示文章,普通视图为index_php?idg ...我想我应该制作一种 RewriteRule 并将其与另一个 .php 设置文件混合。

【问题讨论】:

    标签: php .htaccess url url-rewriting


    【解决方案1】:

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
    RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
    RewriteRule ^([A-Za-z0-9\_\-]+)$ index.php?job=wiad&idg=$1&id=$2&x=$3&n_id=$4 [QSA,L]

    【讨论】:

    • Thx @spickywolf 但这不是答案:/ 老实说,当我尝试打开文章时,什么都没有改变,有一个旧的和丑陋的 url。是否可以用某种模式重写它(抱歉有明显的错误)... f.ex: ^read.php/$page_name/$article_name/$ 并在那里 - 在 read.php 文件中 - 带有 url 的 parse_str?
    • RewriteEngine On RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]* )\.html$ /index.php?job=$1&idg=$2&id=$3&x=$4&n_id=$5 [L]
    【解决方案2】:

    或者你可以使用这个

    重写引擎开启 重写规则 ^([^/])/([^/])/([^/])/([^/])/([^/]* ).html$ /index.php?job=$1&idg=$2&id=$3&x=$4&n_id=$5 [L]

    【讨论】:

    • 我做到了 - 它给了我这样的输出:domain.com/wiad/3/42/20/8.html - 很好,但还不够。我想使用 id 和列名称之间的关系,并使用名称而不是数字来构造 url。感谢您的努力!
    • 这可以帮助你链接:generateit.net/mod-rewrite/index.php
    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2011-04-18
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多