2012-01-18 77 views
0

我正在爲我的站點測試mod重寫。我以爲我會嘗試一個簡單的代碼,但它不工作。我的根目錄(localhost)中有一個.htaccess文件。在localhost中,我有一個名爲profile.php的頁面。 Profile.php可以從我的數據庫中獲取變量p。所以它看起來像localhost/profile.php?p=3其中3是一個唯一的ID。當我去本地主機/ profile.php?p = 3它的作品,但是當我去本地主機/ 3,它不。我找不到404。Mod重寫(htaccess)獲取變量不能正常工作

.htaccess文件:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 
RewriteRule ^(.*)$ http://localhost/profile.php?p=$1 [NC] 

編輯:

httpd.conf文件(目前):

<Directory /> 
Options FollowSymLinks 
AllowOverride All 
Order deny,allow 
Deny from all 
</Directory> 
+0

這對我來說很好,請注意,使用前面的'http:// localhost',apache將重定向,而不是內部重寫。 – 2012-01-18 02:52:09

+0

@JonLin這是什麼意思?即時通訊新的。 – kirby 2012-01-18 03:04:01

回答

0

嘗試添加以下到您的網站的根目錄中的htaccess文件

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

#assume that p is only numeric 
RewriteRule ^([0-9]+)$ profile.php?p=$1 [L,NC] 

編輯:

檢查你的httpd.conf,看看是否設置爲AllowOverride如下。如果設置爲none,那麼.htaccess將不起作用

<Directory /> 
Options FollowSymLinks 
AllowOverride All 
+0

謝謝,但它沒有奏效。相同的404錯誤。 – kirby 2012-01-18 03:28:31

+0

有沒有簡單的方法來測試這個.htaccess文件是否工作。我檢查了Apache以確保mod_rewrite已啓用,並且它是 – kirby 2012-01-18 03:29:42

+0

@ user802370在您的htaccess中放置了一些無效的內容。 '213werw42',如果你得到500錯誤,它正在工作 – 2012-01-18 03:42:57