2016-12-04 39 views
0

我尝试了另一种方法,以漂亮的网址与PHP:的.htaccess和PHP美化URL

$request = explode("/", substr(@$_SERVER['PATH_INFO'], 1)); 

上面的代码将让我使用的东西,如“www.example.com/index网址。 php/article/how-to-diy“其中”/ article/how-to-diy“是URL参数。

但是我真的很想失去“index.php”,但我绝不是.htaccess-wiz,所以我可以在制作rewriterule时使用一些帮助,这会将我的网址更改为“www .example.com的/条/如何对DIY”。

我环顾四周,我发现的例子都与经典参数语法(即“index.php?page = 12”)有关,这不是我之后的解决方案。

回答

1

我习惯于处理网址的典型MVC/Wordpress方式......在htaccess和网址路由器中的所有工作较少工作。我举一个例子:

的.htaccess

DirectoryIndex index.php 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . index.php 
</IfModule> 

然后,内index.php文件调用它分析你的网址,并产生相应的页面路由机制。但不要用PATH_INFO,你需要知道什么被要求:

$request = explode("/", @$_SERVER['REQUEST_URI']); 

编辑:

如果脚本(的index.php)和的.htaccess不在文档中根,在重写规则应该反映这一点:

RewriteRule . /path/to/index.php 

然后路由机制应该简单地通过$请求循环,为了找到它所需要的零件。

+0

我已经试过这种方法,并且得到一个“ERR_TOO_MANY_REDIRECTS”。 在我的index.php中,我检查了是否有任何参数,如果没有,重定向到./home - 我已经有一个系统设置来处理路由。 –

+0

然后我们需要看看你的路由机制 – WEBjuju

+0

index.php:$ request = explode(“/”,substr(@ $ _ SERVER ['PATH_INFO'],1));如果(空($ request [0])){ header(“Location:./home”); } –