2015-10-13 56 views
0

在這個網站上和WAMP本地主機的.htaccess在線重寫規則和本地主機

http://www.aproapetot.ro/page.php?categ_id=1&id=1

http://localhost/aproapetot-backup/page.php?categ_id=1&id=1

我試圖建立的.htaccess,但沒有成功。

這是我寫的在線網站:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^page-([0-9]+).html$ page.php?categ_id=$1 
RewriteRule ^page\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
</IfModule> 

這對於本地主機

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /aproapetot-backup/ 
RewriteRule index.php index.html 
RewriteRule ^page-([0-9]+).html$ page.php?categ_id=$1 
RewriteRule ^page\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
</IfModule> 

有人請給一點幫助。

這是一個網站與笑話所以後.ro/page.php?categ_id = 1 & id = 1我有一個類別(1)和子類別(1)。 我想有這樣的 .ro /笑話/醫生,而不是現在。

回答

0

我不完全相信你基於htaccess的內容要什麼,不過現在我不明白的是,你想/笑話/醫生改寫爲/pages.php

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !pages.php [NC] 
RewriteRule ^(.*)$ /pages.php [L] 

將上面的代碼將所有請求重寫爲pages.php,只要:

  • %{REQUEST_FILENAME}「!-f」:文件本身在服務器上不存在。
  • %{} REQUEST_FILENAME pages.php:該請求不作出pages.php(這意味着它已經被重寫)

最後,你可以使用PHP中使用獲得的參數:

/* Get all parameters from the URL */ 
$_GET['path'] = rawurldecode($_SERVER['REQUEST_URI']); 
/* Remove double slashes and backslahses and convert all slashes and backslashes to '/' */ 
$_GET['path'] = preg_replace(array('#[/\\\\]+#', '/(\/\.)+(\/)/'), '/', $_GET['path']); 


$_GET['path'][0] should contain "jokes" 
$_GET['path'][0] should contain "doctors" 

==編輯==

重定向使用htaccess的(不是最好的方法)

Redirect 301 /page.php?categ_id=6&id=0 /anecdotes 
Redirect 301 /page.php?categ_id=1&id=1 /jokes/doctors 

PHP(或其他服務器端腳本)。如果網址實際上有數字(請參閱$_SERVER['REQUEST_URI']),並且如果您的頁面添加了一些標題重定向,您可以執行檢查。

<?PHP 
header('Location: www.aproapetot.ro/' . $cat . '/' . $subcat); 
?> 
+0

感謝您的回答。該網站有多個類別和子類別。前鏈接 – dragon

+0

謝謝你的回答。該網站有多個類別和子類別。對於這個鏈接http://www.aproapetot.ro/page.php?categ_id=6&id=0有類別6和子類別0,這意味着該類別是軼事,沒有子類別。所以在數據庫中,每個數字,類別和子類別都有一個名稱。我想用重寫規則將這些名字帶到nrs上。例如:.ro /軼事,或.ro /笑話/先生約翰,或.ro /故事/有趣的故事,或.ro /故事/明智的故事。所有示例都是數據庫中的categ和subcat,但是在鏈接中,在page.php之後,它們顯示爲數字。 – dragon

+0

我明白你的意思了。但是有一個小問題:.htaccess無法與您的數據庫進行通信。因此,如果你想要.htaccess來處理這個,你需要在htaccess文件中硬編碼所有的數字和名字。然而,更好的解決方案是更改網站上的鏈接,以便數字不再顯示,並使用上述htaccess將名稱重寫爲數字。如果你想改變數字本身的名字,你也可以使用JavaScript。我會編輯我的答案。 – Jeffrey