2015-06-26 107 views
1

我想與漂亮的網址一起工作。但它會去404.php 我不知道我的.htaccess有什麼問題。我是新與此prettyurlprettyurl我無法打印值

的.htaccess

RewriteEngine on 

RewriteRule ^([0-9]+)/$ test.php?id=$1 

# not a file 
RewriteCond %{REQUEST_FILENAME} !-f 
# not a directory 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule .? /404.php [L] 

在我的test.php的

這裏是唯一的代碼裏面我test.php的

if(isset($_GET['id'])){ 
    $id = $_GET['id']; 
    echo $id; 
} 

,但它不是打印。

我指出我的瀏覽器這樣的

http://localhost/myprojectfolder/test/1

我的項目結構

myporjectfolder 
    - index.php 
    - .htaccess 
    - test.php 

預先感謝您。

+0

了/ test文件夾它目前還不清楚你的問題......如果重寫的工作原理如上所述傾向於,然後在內部用'$ _GET ['id']'參數調用腳本'test.php' _is_。你可以用它正常的方式... – arkascha

+0

但爲什麼不打印1? – jemz

+0

然後很明顯重寫是不工作的......這個'.htaccess'風格文件位於文件夾層次結構中的位置?此外,請確保您不會遇到緩存問題,請在瀏覽器中進行深度重新加載或完全禁用緩存以進行測試... – arkascha

回答

2

我認爲你有幾個問題。您指向http://localhost/myprojectfolder/test/1,但您的規則中沒有/test。你只有接受數字。此外,您並未在網址末尾使用斜線,但您的規則聲明它應該在那裏,因此不會與任何匹配,除非您將其設爲可選。

此外,您正在將不存在的文件導向到404.php。製作漂亮的網址,你正在嘗試做的也是不存在的文件。所以這可能會導致問題。

不管怎樣,試試你的規則,這樣的URL像這樣

http://localhost/myprojectfolder/test/1

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^test/([0-9]+)/?$ test.php?id=$1 [L] 

或拆除似乎是不必要反正

http://localhost/myprojectfolder/1

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([0-9]+)/?$ test.php?id=$1 [L] 
+0

「或者刪除看起來不必要的/ test文件夾」,測試不是一個文件夾它是一個php文件 – jemz

+0

正確,但是您在URL中使用它,所以您的規則將不匹配,除非您將其添加到重寫規則。看我的第一個例子。你**不需要**在URL中測試,因此我的第二個例子。 –

+0

非常感謝你現在的作品,我現在明白了,但是[L]是什麼必要的? – jemz