2017-03-03 183 views
0

我有一个网站在主页上显示多篇文章。每篇文章都有一个链接,当我点击它时,我通过URL将“ID,日期和标题”作为参数传递给“article.php”页面。当我在文章页面上时,我会识别哪些文章是由Id编辑的,然后显示内容。用htaccess重写网址(apache)

但我的问题是:当我打开“article.php”页面我的网址看起来像这样

http://127.0.0.1/Andrea/mySite/article.php?id=21&date=02%20march%202017%title=Basket%20NBA:%20Bulls-Warriors.%20Analysis 

我创建了.htaccess文件,我能人重定向至其他网页等等重写启用,什么我是搜索到的网址从上述改变这样的事情

http://127.0.0.1/Andrea/mySite/2017/03/02/basket-nba-bulls-warriors

所以我想删除后点“分析”部分和“article.php”从URL中,切换的日期就像它是文件夹一样s和标题写在字之间的分数。

我已经试过

RewriteEngine on 
RewriteRule ^id/([A-Za-z0-9-]+)/?$ article.php?id=$1 [NC] 

要删除“article.php”和斜杠之间添加标识,但它似乎并没有工作。

谢谢大家谁会帮助我的建议。

回答

3

与mod_rewrite的

的路线的.htaccess添加一个名为.htaccess在你的根文件夹中的文件,并添加这样的:

RewriteEngine on 
RewriteRule ^/?Some-text-goes-here/([0-9]+)$ /picture.php?id=$1 

这将告诉Apache的mod_rewrite启用此文件夹,如果它被问到一个与正则表达式匹配的URL,它会在内部将它重写为你想要的内容,而最终用户不会看到它。简单,但不灵活,所以如果你需要更多的力量:

PHP的路线

把你的.htaccess以下代替:

FallbackResource的index.php

这将告诉它运行你的index.php文件,通常它在你的网站找不到它。在那里,你可以再例如:

$path = ltrim($_SERVER['REQUEST_URI'], '/'); // Trim leading slash(es) 
$elements = explode('/', $path);    // Split path on slashes 
if(empty($elements[0])) {      // No path elements means home 
    ShowHomepage(); 
} else switch(array_shift($elements))    // Pop off first item and switch 
{ 
    case 'Some-text-goes-here': 
     ShowPicture($elements); // passes rest of parameters to internal function 
     break; 
    case 'more': 
     ... 
    default: 
     header('HTTP/1.1 404 Not Found'); 
     Show404Error(); 
} 

这是网站和CMS系统有多大做到这一点,因为它允许在解析URL,配置和数据库相关网址等零星使用硬编码的重写更大的灵活性规则在.htaccess将尽善尽美。

+0

谢谢,但你能更清楚吗?或者也许适应我的例子?我会很感激。 – Andrea

+0

如果您想查看示例,请点击此处[示例链接](https://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/) –