【问题标题】:How To Clean Up A URL From ? to /如何清理一个 URL?至 /
【发布时间】:2016-10-31 04:28:33
【问题描述】:

我需要帮助清理我的网址:

http://cocrele.com/service-areas/?state=arkansas&city=amity

到这里:

http://cocrele.com/service-areas/arkansas/amity/

我尝试了一些 .htaccess 技巧,但使用 WordPress 没有任何效果...

如果能提供任何帮助,我将不胜感激。

布雷特

【问题讨论】:

    标签: php wordpress .htaccess


    【解决方案1】:

    试试这个,这将在 url 中搜索字符串,如果它包含你想要的,那么你可以根据它设置 get 参数。很容易修复。

    $url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    
    if (strpos($url,'amity') !== false) {
    //Do functions, etc. if it contains amity
        $_GET['state'] = 'arkansas';
        $_GET['city'] = 'amity';
    
    } else {
        //Don't do anything
    }
    

    【讨论】:

    • 我搞定了!!!!!!!!!我购买了一个域而不是使用 localhost 并且它有效。
    • @BrettMelton 太棒了!很高兴听你这样说。如果我的解决方案有效,请将其标记为正确,谢谢。
    • 虽然现在,当我创建像 domain.com/admin/portal/index.php 这样的管理员登录名时。
      如果我创建像 pages.php 这样的另一个页面,它仍然会重定向到索引。 php?????????
      有没有办法分离文件夹层次结构,例如如果此 url 已通过,则在退出时使用单独的页面?
      RewriteEngine On
      RewriteCond %{REQUEST_URI} !(/$|\.)
      RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]
      RewriteCond $1 !^(index\.php|images|robots\.txt)
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ /index.php?$1 [NC,QSA,L]
    【解决方案2】:

    你需要一个自定义的重写规则。check this out

    在你的function.php中

    function custom_rewrite_tag() {
      add_rewrite_tag('%state%', '([^&]+)');
      add_rewrite_tag('%city%', '([^&]+)');
    }
    add_action('init', 'custom_rewrite_tag', 10, 0);   
    
    
    function custom_rewrite_rule() {
        add_rewrite_rule('^service-area/([^/]*)/([^/]*)/?','index.php?page_id=578&state=$matches[1]&city=$matches[2]','top');
      }
      add_action('init', 'custom_rewrite_rule', 10, 0);
    

    现在您可以使用以下 URL 访问同一页面: http://cocrele.com/service-area/arkansas/amity/

    不要忘记在此更改后重置您的永久链接以使其正常工作。只需再次保存永久链接规则。

    【讨论】:

    • 我试过了,但我觉得还有更多...我正在使用 PHP,例如如果 URL 中的 $city 为空,则显示状态页面并选择一个城市。在这里,cocrele.com/service-areas,然后转到cocrele.com/service-areas/?state=arizona,然后在这里结束cocrele.com/service-areas/?state=arizona&city=bapchule 当你说永久链接时,我可能不知道你的确切意思......
    • 代码完成后,进入设置->永久链接并再次保存,重写后必须使用Flush实现。
    • 我做到了。抱歉耽搁了!如果我只是将 URL 从这个:cocrele.com/service-area/?state=california&city=arcadia 更改为这个:cocrele.com/service-area/california/arcadia 它只是重定向回主页?
    • 我已经改了请重试,我们需要添加page_id,你的情况是page_id=578
    • 所以,我用上面的新代码重新保存了functions.php文件,现在它没有重定向,这很好……但是,现在它再次要求州和城市。 .. 我的猜测是我的 PHP 需要更改,但我想知道如果我不使用 GET,如何从数据库中提取数据?但我喜欢进步!!!!!!
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2017-08-10
    • 2017-02-06
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多