将斜杠转换为波浪线作为Url分隔符

时间:2014-04-22 09:46:03

标签: php .htaccess url url-rewriting laravel

我有一个问题,我们如何用斜线代替斜线来分隔Url 例如,我有一个像:

这样的网址

第一个案例

www.domain.com/category/category_id
 then URL shown would be 
www.domain.com/category~category_id

第二案

 www.domain.com/category/subcategory/category_id
 then URL shown would be 
 www.domain.com/category/subcategory~category_id

因此,当我们遇到这样的情况时,我们会将Url分开,只会影响最后一段。我们如何才能在Php中做到这一点。我想在Laravel做这件事!任何建议都将不胜感激。

由于

2 个答案:

答案 0 :(得分:0)

  1. 在您的www root中创建.htaccess并将其放入其中:

    重写发动机 RewriteCond%{SCRIPT_FILENAME}!-d
    RewriteCond%{SCRIPT_FILENAME}! - f
    RewriteRule ^(。*)$ index.php?params = $ 1 [QSA]

  2. index.php中的
  3. 使用它来获取参数:

    ...
    $ params = explode(' /',$ _GET [' params']);
    $ lastTwo = explode('〜',$ params [count($ params) - 1]);
    if(count($ lastTwo)== 2){
      $ params [count($ params) - 1] = $ lastTwo [0];
      $ params [] = $ lastTwo [1];
    } ...

  4. 现在你将所有params作为数组,你可以处理它。

答案 1 :(得分:0)

您可以在根目录中使用此规则.htaccess:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/([^~]+?)/([^/~\s]+)/? [NC]
RewriteRule ^(.+?)/([^/~]+)/?$ /$1~$2 [R=301,L,NE]

RewriteRule ^([^~]+)(.+)$ /$1/$2 [R=301,L,NE]