prettyurl我无法打印价值

时间:2015-06-26 08:22:19

标签: php .htaccess mod-rewrite

我正在尝试使用漂亮的网址。但它会转到404.php 我不知道我的.htaccess有什么问题。我是这个漂亮的新人

的.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

提前谢谢。

1 个答案:

答案 0 :(得分:2)

我认为你有几个问题。您指向的是http://localhost/myprojectfolder/test/1,但您的规则中没有/test。你只能接受数字。你也没有在URL的末尾使用斜杠,但是你的规则说它应该在那里也不匹配,除非你把它作为可选。

此外,您还要将不存在的文件定向到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]

或删除似乎不必要的/ test文件夹

http://localhost/myprojectfolder/1

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