2012-12-30 45 views
0

我想使用.htaccess文件製作友好的URL。但是,當我點擊鏈接,這是在HREF如何在使用htaccess重寫動態url時製作href

指定
<a href="category.php?id= <?php echo "{$row['name']}"; ?>">Example </a> 

$row['name']是動態的。數據存在於MySQL數據庫中。

代碼(category.php):

<?php 
if($_GET['id']){ 
    $result = $_GET['id']; 
} 
echo "this is {$result} page"; 
?> 

此傳遞的參數只是存儲在$result變量並將其顯示在屏幕上。

代碼(.htaccess文件):

Options -Multiviews 
RewriteEngine On 
RewriteRule ^website/(.+)$ category.php?id=$1 

,當我點擊鏈接它顯示像http://mydomain.com/category.php?id=Rohit 而不是http://mydomain.com/website/rohit的URL。

但是,當我手動寫入URL到http://mydomain.com/website/rohit它顯示相同的頁面。這表明.htaccess文件正在工作。我想單擊示例時直接顯示上面的URL。

一個例子
當我們點擊的維基百科頁面奧巴馬它去http://en.wikipedia.org/wiki/Barack_obama但原鏈接的作品太 - http://en.wikipedia.org/w/index.php?title=Barack_obama。兩頁都顯示相同的數據。 它們不會向用戶顯示第二個URL,而是顯示另一個。我想達到同樣的結果。

如何編寫鏈接以便重寫URL?

回答

2

變化

<a href="category.php?id= <?php echo "{$row['name']}"; ?>">Example </a> 

<a href="website/<?php echo "{$row['name']}"; ?>">Example </a> 
+0

非常感謝。 你的代碼工作。 – Rahulkg007

2

有可能與Apache mode_rewrite和mod_replace要做到這一點,但我不會推薦它。因爲我想你想用兩種方式來支持它,並且你正在使用PHP,所以我會創建一個函數(或類/方法)來重寫你的書寫URL。 即:

<a href="<?php getUrl('category.php', $row['name']}) ?>">Example</a> 

通過這種方式,可以處理不同的URL根據用戶請求。

function getUrl($phpfile, $argument) { 

    if ('<some logic to check if user request is rewritten') {  
     return "website/" . $argument; 
    } else {  
     return $phpfile . "?id=" . $argument; 
    } 
} 
+0

這種方法更加靈活。 – Rahulkg007

0

如果您使用的是URL重新寫入然後在HREF你必須通過你自己的搜索引擎友好的URL;爲最佳實踐創建一個通用的功能,並將您的參數傳遞到該功能,並生成搜索引擎友好的網址爲href;

或代替類似category.php創建網址是什麼?在HREF硬編碼href網址類似的網站ID =123分之123

,或者你必須定義一樣,如果用戶訪問規則的頁面類似category.php?ID = 123然後將用戶重定向到網站/ 123