2017-03-03 222 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/) –